Найти файлы, которые соответствуют нескольким шаблонам в 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;
}

Источник: http://csharphelper.com/blog/2015/06/find-files-that-match-multiple-patterns-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector