Список папок которые нужно обойти при поиске (не показывать их)
public static readonly string[] BypassDir = new string[]
{
"Microsoft", "History", "Temp",
};
Метод которым ищу файлы с "обходом"
public static List<string> GetAllFiles(string path, string pattern, SearchOption so = SearchOption.AllDirectories)
{
var files = new List<string>();
try
{
foreach (string file in Directory.EnumerateFiles(path, pattern, so))
{
var fileInfo = new FileInfo(file);
files.Add(file);
}
foreach (string fl in Directory.EnumerateDirectories(path, "*", so))
{
if (!BypassDir.Contains(fl, StringComparer.OrdinalIgnoreCase))
//if (!BypassDir.Any(ext => ext != Path.GetExtension(fl)))
{
files.AddRange(GetAllFiles(fl, pattern, so));
}
}
}
catch { }
return files;
}
Но при сканирование всё ровно проходит папки, как исключить их правильно?
Microsoft, аflнебось целый путь (c:\SomeDir\Microsoft). Задайте теперь себе вопрос, есть ли вBypassDirзначениеc:\SomeDir\Microsoft? В строке, что вы закомментировали, там вы пошли в верном направление, только что такоеGetExtension()? Что вообще такоеExtension? Верно, это все, что идет после точки (.exeнапример), ну так почему сверяете название директории и расширение? – EvgeniyZ Nov 18 '21 at 23:30