我有这段代码:
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
每次路径都会改变!所以相对路径会更好。
答案 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