Как пропустить папки с несанкционированным доступом при создании списка fileinfo? [дубликат]


На этот вопрос уже есть ответ здесь:

I имейте это для поиска файлов и списка в список .но когда речь заходит о папке, которая нуждается в авторизованном доступе, она останавливается. Как я могу заставить это пропустить эти папки и продолжить?

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
{
}
1 2

1 ответ:

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
        {
        }
    }
}

Сделайте это с помощью рекурсии, а не AllDirectories

Запустите его как GetFiles(dif)