代码之家  ›  专栏  ›  技术社区  ›  blez

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

  •  2
  • blez  · 技术社区  · 14 年前

    在使用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 回复  |  直到 14 年前
        1
  •  1
  •   Pieter van Ginkel    14 年前

    如果你在 Directory.GetFiles() ,如果下一个目录失败,您应该可以继续下一个目录。你甚至可以这样包装:

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