这个方法是我从 backgroundworker dowork 事件中调用的
void WalkDirectoryTree(System.IO.DirectoryInfo root)
{
try
{
files = root.GetFiles("*.cs");
int Vara = File.ReadAllText(files[0].Name).Contains("namespace") ? 1 : 0;
}
catch (UnauthorizedAccessException e)
{
}
catch (System.IO.DirectoryNotFoundException e)
{
Console.WriteLine(e.Message);
}
}
问题是我在线上遇到异常:
int Vara = File.ReadAllText(files[0].Name).Contains("namespace") ? 1 : 0;
Could not find file 'D:\C-Sharp\Search_Text_In_Files\Search_Text_In_Files\Search_Text_In_Files\bin\Debug\Logger.cs'
最佳答案
使用 FileInfo.Name
您只能获取文件名,而不是完整路径。
因此,您正在尝试读取相对于当前目录的文件,但该文件不存在。
改为获取完整路径,即 FileInfo.FullName
而不是 FileInfo.Name
。
如果你想读取所有文件,你应该遍历文件而不是只读取第一个文件(files[0]
),后者无论如何都是危险的,因为如果没有找到文件。
foreach (var fileInfo in files)
{
int Vara = File.ReadAllText(fileInfo.FullName).Contains("namespace") ? 1 : 0;
}
关于c# - 从 DirectoryInfo.GetFiles 返回的 FileInfo 没有指向文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37830260/