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

C# 递归枚举C中的文件和目录#,c#,macos,mono,c#-2.0,C#,Macos,Mono,C# 2.0,在使用Mono的MacOS上,当我使用Directory.GetFiles()列出文件和目录时,我得到System.unathorizedAccessException,它停止枚举。任何人都知道如何让它继续,或者可能是一种不同的枚举文件方法 编辑: 我自己写的方法,似乎很管用 static void DirSearch(string sDir) { try { foreach (string d in Directory.GetDirect

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

编辑: 我自己写的方法,似乎很管用

        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 { }
        }
编辑:
我想知道第一个异常时该代码是否会退出?

如果您在
目录.GetFiles()
中放置一个try/catch,那么如果下一个目录失败,您应该可以继续使用它。您甚至可以这样包装:

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

您是否可以包括您试图读取的目录、它们的权限、应用程序运行的权限,以及您是否希望在枚举期间写入这些文件夹?管理员帐户、mono myapp.exe、trying/private/var/foldersAn unspecified
catch
通常不是一个好主意。抓住你担心的例外情况;在这种情况下,
未经授权的访问异常