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

搜索选项.alldirectories并忽略访问错误?

  •  1
  • Crash893  · 技术社区  · 15 年前
            string[] files = Directory.GetFiles(tb_dir.Text, tb_filter.Text, SearchOption.AllDirectories);
    

    我在搜索一个目录和所有子目录以查找一些文件。我不断地遇到一个当前代码的错误,当它看到一些它不能进入的东西时,它就会中断。

    在这个无关紧要的应用程序中,我宁愿继续。是否有任何方法可以绕过此代码,避免每次都将其转储?

    谢谢

    撞车893

    1 回复  |  直到 15 年前
        1
  •  1
  •   YWE    15 年前

    你可以这样做:

    List<string> GetFiles(string topDirectory, string filter)
    {
        List<string> list = new List<string>();
        list.AddRange(Directory.GetFiles(topDirectory, filter));
        foreach (string directory in Directory.GetDirectories(topDirectory))
        {
            list.AddRange(GetFiles(directory));
        }
        return list;
    }
    

    并用以下方式称呼它:

    List<string> files = GetFiles(tb_dir.Text, tb_filter.Text);
    

    当然,您可以将文件列表转换为数组。

    您必须添加try catch块来处理unauthorizedAccessException。

    推荐文章