C# 如何在创建文件信息列表时跳过未经授权访问的文件夹?

C# 如何在创建文件信息列表时跳过未经授权访问的文件夹?,c#,getfiles,C#,Getfiles,我用它来查找文件和列表。但是当涉及到需要授权访问的文件夹时,它会停止。我怎样才能让它跳过那些文件夹并继续 string[] filetypes = new string[] { "3gp", "avi", "dat", "mp4", "wmv", "mov", "mpg", "flv", } try { foreach (string ft in filetypes)

我用它来查找文件和列表。但是当涉及到需要授权访问的文件夹时,它会停止。我怎样才能让它跳过那些文件夹并继续

string[] filetypes = new string[] { "3gp", "avi", "dat", "mp4", "wmv", 
                                                         "mov", "mpg", "flv",  }
try
{
    foreach (string ft in filetypes)
    {                    
        files.AddRange(dif.GetFiles(string.Format("*.{0}", ft),
                                                  SearchOption.AllDirectories));    
    }
}
catch
{
}
使用递归而不是
AllDirectories

GetFiles(dif)

使用递归而不是
AllDirectories


GetFiles(dif)

-1那样运行它,如果任何子目录失败,那么这将失败。您应该注意
SearchOption.AllDirectories
@SriramSakthivel感谢您注意到并编辑了我的回答抱歉我的无知,因为“file”是List files=new List();我不能给它加上字符串。这个过程将通过一个类似按钮的按钮1\u点击触发。你能重新安排一下吗please@emmett您可以使用FileInfo构造函数接受字符串路径,我编辑了我的答案。在button1\u click handler中调用
GetFiles(dir)
有什么问题?@wudzik谢谢。我现在明白了。但我不得不将静态的void改为public。你能用一句话简单地解释一下区别吗?最后,如果想要显示currenl search dir的textbox,我会把textbox1.text=dir放在哪里?我在first foreach之后加了一个,但它似乎不起作用-1如果任何子目录失败,它将失败。您应该注意
SearchOption.AllDirectories
@SriramSakthivel感谢您注意到并编辑了我的回答抱歉我的无知,因为“file”是List files=new List();我不能给它加上字符串。这个过程将通过一个类似按钮的按钮1\u点击触发。你能重新安排一下吗please@emmett您可以使用FileInfo构造函数接受字符串路径,我编辑了我的答案。在button1\u click handler中调用
GetFiles(dir)
有什么问题?@wudzik谢谢。我现在明白了。但我不得不将静态的void改为public。你能用一句话简单地解释一下区别吗?最后,如果想要显示currenl search dir的textbox,我会把textbox1.text=dir放在哪里?我把第一个foreach放在后面,但似乎没有work@emmett检查答案是否有用you@emmett检查答案是否对你有帮助
static void GetFiles(string dir)
{
    string[] filetypes = new string[] { "3gp", "avi", "dat", "mp4", "wmv", 
                                                     "mov", "mpg", "flv",  }
    foreach(string ft in filetypes)
    {
       foreach (string file in Directory.GetFiles(dir, string.Format("*.{0}", ft),
                                              SearchOption.TopDirectoryOnly)))
       { 
             files.Add(new FileInfo(file));
       }
    }
    foreach (string subDir in Directory.GetDirectories(dir))
    {
        try
        {
            GetFiles(subDir);
        }
        catch
        {
        }
    }
}