当我将参数传递给Main
函数static void Main(string[] args)
时,我的应用程序的默认位置会更改为args[0]
包含的任何内容。
例如,我有一个文件" test.txt"位于与应用程序exe相同的文件夹中。如果我打电话File.Open("test.txt", FileMode.Open);
,打开文件就不会有任何问题。现在,如果我已经通过Main
调用File.Open("test.txt", FileMode.Open);
的参数将查找文件" test.txt"在args[0]
的位置,而不是从exe位置。
我们说我的exe位于C:\users\application.exe
且args[0]
字符串为D:\files\music
,行File.Open("test.txt", FileMode.Open);
将尝试打开文件{{ 1}}而不是D:\files\music\test.txt
。
如何解决此问题,以便我仍然可以访问该文件" test.txt"?
答案 0 :(得分:0)
您正在使用相对路径 但是,相对路径是相对于当前目录的,而不是EXE文件的位置。
相反,您可以显式构建绝对路径:
Path.Combine(Path.GetDirectory(typeof(Program).Assembly.Location), "test.txt")