【发布时间】:2018-04-28 20:38:20
【问题描述】:
我正在 VS2017 中创建一个 C# 程序,它将读取位于 C:\Program Files 文件夹的子文件夹中的文件。当我尝试启动应用程序时,我收到一条错误消息,提示它无法在 C:\Users\<loginname>\source\repos\<solutionname>\bin\debug\\<folder name that contains the file> 中找到文件。在代码中,它停在foreach (string line in File.ReadLines(file) 处,说它找不到文件并显示错误消息
System.IO.FileNotFoundException: '找不到文件'C:\Users\Username>\source\repos\NewApp\NewApp\bin\Debug\SubDirectory'。"
应该是从"C:\Program Files\MyApp\SubDirectory\"读取文件
在 Visual Studio 的早期版本中,这按预期工作,但这只发生在 VS 2017 中。
我的代码如下:
string[] FileDirs = Directory.GetDirectories(Path.Combine(@"C:\Program Files\"+"\MyApp\"));
foreach (string dir in SubDirs)
{
string file = Path.GetFileName(dir);
foreach (string line in File.ReadLines(file))
{
if (line.StartsWith("StartText"))
{
string TextToAdd = line;
ListBox.Items.Add(TextToAdd);
}
}
}
我还尝试用 Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) 替换硬编码的程序文件目录,但它却说找不到 Program Files (X86) 目录下的文件夹:
"System.IO.DirectoryNotFoundException: '找不到一部分 路径'C:\Program Files (x86)\MyApp\"
它应该在 C:\Program Files 文件夹中查找,而不是 C:\Program Files (x86) 文件夹。 (顺便说一句,它是 Win 10 64 位操作系统)
【问题讨论】:
-
您的字符串连接语法已关闭:MyApp 是变量吗?
-
Program Files是 SpecialFolder 和 Path.Combine 不是那样使用的。 -
是的,如果要引用程序文件,可以使用%programfiles%。系统上可能不存在文字 programfiles。
-
无论哪种方式,它都做同样的事情。我正在快速输入此帖子的代码。它应该是 "C:\Program Files\" 此外,如果我将它更改为不同的路径,例如 "D:\TestFolder\",它仍然会执行相同的操作。 “MyApp”是实际的文件夹名称。
标签: c#