Найти файлы, которые соответствуют нескольким шаблонам в C#
Метод System.IO.Directory.GetFiles позволяет легко искать файлы в каталоге, соответствующем шаблону. К сожалению, он может искать только файлы, соответствующие одному шаблону. Например, если вы хотите найти файлы, соответствующие шаблонам * .bmp, * .gif, * .jpg и * .png, вам не повезло.
Метод FindFiles, показанный в следующем коде, ищет файлы, которые соответствуют нескольким шаблонам.
// Поиск файлов, соответствующих шаблонам.
private List<string> FindFiles(string dir_name, string patterns,
bool search_subdirectories)
{
// Создаем список результатов.
List<string> files = new List<string>();
// Получить шаблоны.
string[] pattern_array = patterns.Split(';');
// Поиск.
SearchOption search_option = SearchOption.TopDirectoryOnly;
if (search_subdirectories)
search_option = SearchOption.AllDirectories;
foreach (string pattern in pattern_array)
{
foreach (string filename in Directory.GetFiles(
dir_name, pattern, search_option))
{
if (!files.Contains(filename)) files.Add(filename);
}
}
// Сортировать.
files.Sort();
// Вернуть результат.
return files;
}
