0

当我将参数传递给Main函数static void Main(string[] args)时,我的应用程序的默认位置会更改为包含的任何args[0]内容。

例如,我有一个文件“test.txt”与应用程序 exe 位于同一文件夹中。如果我打电话File.Open("test.txt", FileMode.Open);,打开文件不会有任何问题。现在,如果我已将参数传递给Main调用,则会在 的位置而不是从 exe 位置File.Open("test.txt", FileMode.Open);查找文件“test.txt” 。args[0]

假设我的 exe 位于C:\users\application.exe且字符串args[0]D:\files\music,该行将File.Open("test.txt", FileMode.Open);尝试打开文件D:\files\music\test.txt而不是C:\users\test.txt.

如何解决这个问题,以便我仍然可以访问文件“test.txt”?

4

1 回答 1

0

您正在使用相对路径
但是,相对路径是相对于当前目录的,而不是您的 EXE 文件的位置。

相反,您可以显式构建绝对路径:

Path.Combine(Path.GetDirectory(typeof(Program).Assembly.Location), "test.txt")
于 2013-04-08T00:06:32.433 回答