c# - 递归获取文件 : skip files/directories that cannot be read?

标签 c# file exception directory

我想获取数组中目录中的所有文件(包括子文件夹中的文件)

string[] filePaths = Directory.GetFiles(@"c:\",SearchOption.AllDirectories);     

问题是:如果抛出异常,整个命令都会停止。有没有更好的方法来做到这一点,以便如果无法访问文件夹,它会跳过它?

最佳答案

然后您可能需要自己输入更多内容,然后编写一个像这样的目录遍历器:

    public static string[] FindAllFiles(string rootDir) {
        var pathsToSearch = new Queue<string>();
        var foundFiles = new List<string>();

        pathsToSearch.Enqueue(rootDir);

        while (pathsToSearch.Count > 0) {
            var dir = pathsToSearch.Dequeue();

            try {
                var files = Directory.GetFiles(dir);
                foreach (var file in Directory.GetFiles(dir)) {
                    foundFiles.Add(file);
                }

                foreach (var subDir in Directory.GetDirectories(dir)) {
                    pathsToSearch.Enqueue(subDir);
                }

            } catch (Exception /* TODO: catch correct exception */) {
                // Swallow.  Gulp!
            }
        }

        return foundFiles.ToArray();
    }

关于c# - 递归获取文件 : skip files/directories that cannot be read?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11927116/

相关文章:

c# - 如何在 C# 中选择异步调用的方法,如何传播异步

c# - 如何使用默认的asp.net core DI容器在类中注入(inject)单个接口(interface)的多个服务类实现

c# - File.AppendAllText导致程序第二次运行时抛出访问异常

c# - 在c#中读写

Python assertRaises 处理用户定义的异常

java - Java 中的异常堆栈跟踪日志记录应使用什么级别?

c# - 在 OpenIddict 中处理请求时发生未处理的异常

c# - 为什么 IE 不能将我的输出识别为 XML?

java - 如何在 Java 顺序读取期间获取当前文件位置?

ios - @try 无法捕获 EXC_I386_GPFLT?