在C#中递归枚举文件和目录

时间:2010-10-30 23:02:27

标签: c# macos mono c#-2.0

在使用Mono的MacOS上,当我使用Directory.GetFiles()列出文件和目录时,我得到System.UnathorizedAcessException并且它会停止枚举。任何人都知道如何继续或可能采用不同的方法来枚举文件

编辑: 我写了自己的方法,似乎有效。

        static void DirSearch(string sDir) {
        try {
            foreach (string d in Directory.GetDirectories(sDir)) {
                Console.WriteLine(d);
                foreach (string f in Directory.GetFiles(d, "*")) {
                    Console.WriteLine(f);
                }

                DirSearch(d);
            }
        } catch { }
        }

编辑: 我想这个代码会在第一个例外退出吗?

1 个答案:

答案 0 :(得分:1)

如果你在Directory.GetFiles()周围放置一个try / catch,你应该能够继续使用下一个目录,如果它失败了。你甚至可以这样包装:

private string[] SafeGetFilesForDirectory(string directory)
{
    try
    {
        return Directory.GetFiles(directory);
    }
    catch (UnauthorizedAccessException)
    {
        return new string[0];
    }
}