gpt4 book ai didi

c# - 如何在所有驱动器的所有目录中搜索 .txt 文件?

转载 作者:太空狗 更新时间:2023-10-30 00:42:03 28 4
gpt4 key购买 nike

我正在使用此代码搜索所有驱动器中的所有目录以搜索所有 .txt 文件:

public List<string> Search()
{
var files = new List<string>();
foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady == true))
{
files.AddRange(Directory.GetFiles(d.RootDirectory.FullName, "*.txt", SearchOption.AllDirectories));
}
return files;
}

但是在运行中我遇到了这个错误: enter image description here

如何解决?

谢谢。

最佳答案

这只是一个权限问题。使用 try/catch block 。非特权代码无法访问磁盘上的某些文件夹,包括 RecycleBin 文件夹。

public List<string> Search()
{
var files = new List<string>();
foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady))
{
try
{
files.AddRange(Directory.GetFiles(d.RootDirectory.FullName, "*.txt", SearchOption.AllDirectories));
}
catch(Exception e)
{
Logger.Log(e.Message); // Log it and move on
}
}

return files;
}

另请注意,将 Directory.GetFilesAllDirectories 选项一起使用有一个固有问题,如果整个驱动器中的任何文件夹不可访问,它将失败,因此您不会在结果中获得该驱动器的任何文件。解决方案是进行手动递归。 this SO question 中提供了该方法的一个很好的例子.

关于c# - 如何在所有驱动器的所有目录中搜索 .txt 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17613155/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com