如何在c#服务项目中获取文件相对路径?

时间:2013-12-15 13:02:04

标签: c#

我有这段代码:

Stream stream = new StreamReader("~/quartz.xml").BaseStream;

Q1:C#中的“〜”符号是什么指定路径?

Q2:如何在C#服务项目中获取“〜”目录?

问题3:它是指bin exe目录还是项目名称目录?

我的Windows服务项目中的quartz.xml文件位于两个位置:

D:\jsptpd\Code\jsptpdJobScheduler\jsptpdJobScheduler\bin\Debug

D:\jsptpd\Code\jsptpdJobScheduler\jsptpdJobScheduler

每次路径都会改变!所以相对路径会更好。

2 个答案:

答案 0 :(得分:3)

完全省略它:

Stream stream = new StreamReader("quartz.xml").BaseStream;

默认目录 .exe的目录。


根据OP对问题的编辑:

转到查看> 解决方案资源管理器。右键单击相关文件,然后选择属性。将复制到输出目录选项更改为始终复制。然后使用上面的代码。

答案 1 :(得分:1)

如果我们使用(../ quartz.xml):

StreamReader读取路径是(不是文件实际路径):

C:\Windows\quartz.xml

如果我们使用(quartz.xml):

StreamReader读取路径是(不是文件实际路径):

C:\Windows\system32\quartz.xml

这是查找文件相对路径的方法:

                string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
                string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
                string configFilePath = assemblyDirPath + "\\quartz.xml";
                Stream stream = new StreamReader(configFilePath).BaseStream;

所以路径是(你可以指定两个):

D:\jsptpd\Code\jsptpdJobScheduler\jsptpdJobScheduler\bin\Debug\quartz.xml