ReadAllLines()本地目录不起作用

时间:2018-05-18 16:07:37

标签: c# visual-studio

由于某种原因,ReadAllLines()查找错误的文件夹。

string[] LoadLines = File.ReadAllLines(@"Assets\\UserFile.txt");

" Assets \ UserFile.txt"位于exe文件所在的位置。 调试器抛出带有注释的System.IO.DirectoryNotFoundException:

"找不到路径C:\ WINDOWS \ SysWOW64 \ Assets \ UserFile.txt"

的一部分

为什么要检查错误的文件夹?

2 个答案:

答案 0 :(得分:2)

相对于进程的工作目录解析相对路径名,相对于可执行文件 not 。因此,大概您的流程的工作目录为c:\Windows\SysWOW64

如果您的代码需要加载与应用程序有效捆绑的资产,我会使用嵌入式资源作为一种不必担心物理文件路径的方法。

答案 1 :(得分:1)

试试这个......

string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Assets\UserFile.txt");
string[] lines= File.ReadAllLines(path);

注意:这将查看您正在执行的文件夹,因此请确保文件夹/文件存在于其中。

如果执行文件夹是您的bin文件夹,请确保将文件属性设置为" Content"和"始终复制"或者"复制时更新"在Visual Studio中。