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

bbb*_*bbb 4 c#

我正在使用此代码搜索所有驱动器中的所有目录以搜索所有.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;
}
Run Code Online (Sandbox Code Playgroud)

但在运行中我遇到了这个错误: 在此输入图像描述

怎么解析呢?

谢谢.

dot*_*NET 7

这只是一个权限问题.使用try/catch块.磁盘上的某些文件夹(包括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;
}
Run Code Online (Sandbox Code Playgroud)

另请注意,使用Directory.GetFileswith AllDirectories选项有一个固有的问题,如果整个驱动器中的任何文件夹都无法访问,它将失败,因此您不会在结果中获得该驱动器的任何文件.解决方案是进行手动递归.在这个SO问题中可以找到这种方法的一个很好的例子.