Поиск файлов с расширением c

Обновлено: 04.07.2024

Задача получения списка файлов или папок в другой папке часто бывает при написании программы, поэтому, чтобы рецепт всегда был под рукой, решил написать коротенькую статью.

Получить список файлов в папке

Для получения списка файлов можно воспользоваться методом GetFiles.

Пример поиска файлов:

Метод GetFiles может принимать 3 параметра, из которых первый обязательный:

GetFiles(String path, String pattern, SearchOption options)

path - путь к папке, в которой ищем файлы;

pattern - шаблон поиска файлов (например, *.txt или ??abc.doc);

options - способ поиска, указывающий нужно искать только в текущей папке (SearchOption.TopDirectoryOnly) или во вложенных тоже (SearchOption.AllDirectories).

Пример поиска файлов по шаблону смотрите ниже (рекурсивный поиск).

Метод EnumerateFiles так же может принимать 3 параметра:

path - путь к папке, в которой ищем файлы;

pattern - шаблон поиска файлов;

options - способ поиска.

Пример поиска файлов методом EnumerateFiles:

Как видим, поиск методом EnumerateFiles аналогичен GetFiles, однако, он начнется сразу, до получения всего списка файлов, что может быть актуальным при очень большом количестве файлов.

Получить список папок в папке

Для получения списка папок можно воспользоваться методом GetDirectories.

Пример поиска папок с помощью GetDirectories:

Метод GetDirectories может принимать 3 параметра, из которых первый обязательный:

GetDirectories(String path, String pattern, SearchOption options)

path - путь к папке, в которой ищем файлы;

pattern - шаблон поиска файлов (например, *.txt или ??abc.doc);

options - способ поиска, указывающий нужно искать только в текущей папке (SearchOption.TopDirectoryOnly) или во вложенных тоже (SearchOption.AllDirectories).

Метод EnumerateDirectories аналогично GetDirectories принимает 3 параметра:

path - путь к папке, в которой ищем файлы;

pattern - шаблон поиска файлов;

options - способ поиска.

Пример поиска папок с помощью EnumerateDirectories:

Примечание: Во всех способах получения файлов и папок можно во втором параметре указывать шаблон поиска pattern, однако в нем можно использовать только * (любое количество любых символов) и ? (один любой символ) для указания шаблона поиска, регулярные выражения не поддерживаются.

Получить список файлов по шаблону рекурсивно

В этом случае нужно лишь добавить 2-й параметр, в котором указываем маску файлов и 3-й параметр, означающий что нужно искать файлы так же во вложенных папках.

Однако, у этого способа есть недостаток - в случае, если в какую-то папку нет доступа, получится ошибка и список файлов не будет получен совсем.

Рекурсивно получить список всех файлов и папок

Этот пример рекурсивного поиска файлов и папок не прервется в случае ошибки, а продолжится дальше. Вместо массива здесь используется List для записи списка файлов и папок.

Плюсом такого рекурсивного поиска так же является то, что можно еще и контролировать уровень вложенности и делать, например, отступы для разных уровней.

Читайте также: