Найти файл с определенным расширением в папке

Учитывая путь к папке (например, C:\Random Folder), как я могу найти файл в нем, который содержит определенное расширение, например txt? Я предполагаю, что мне придется искать *.txt в каталоге, но я не уверен, как я должен начать этот поиск в первую очередь.

Ответ 1

Посмотрите на класс System.IO.Directory и статический метод GetFiles. Он имеет перегрузку, которая принимает путь и шаблон поиска. Пример:

 string[] files = System.IO.Directory.GetFiles(path, "*.txt");

Ответ 2

Вы можете использовать Directory класс

 Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)

Ответ 3

Это довольно просто, на самом деле. Вы можете использовать класс System.IO.Directory в сочетании с System.IO.Path. Что-то вроде (используя LINQ делает это еще проще):

var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p));

// Get all filenames that have a .txt extension, excluding the extension
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) == ".txt")
                             .Select(fn => Path.GetFileNameWithoutExtension(fn));

Конечно, есть много вариаций в этой технике. Некоторые из других ответов проще, если ваш фильтр проще. У этого есть преимущество задерживаемого перечисления (если это имеет значение) и более гибкой фильтрации за счет большего количества кода.

Ответ 4

Метод ниже возвращает только файлы с определенным расширением (например: файл с .txt, но не .txt1)

public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption)
    {
        return
            Directory.EnumerateFiles(directoryPath, "*" + extension, searchOption)
                .Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase));
    }

Ответ 5

Как я понимаю, это можно сделать двумя способами:

1) Вы можете использовать класс Directory Class с методом Getfiles и перемещаться по всем файлам, чтобы проверить наше требуемое расширение.

Directory.GetFiles( "your_folder_path) [I].Contains(" *. TXT ")

2) Вы можете использовать Path Class с методом GetExtension, который принимает путь к файлу в качестве параметра и проверяет расширение. Чтобы получить путь к файлу, просто установите условие цикла, которое будет извлекать один файл и возвращать путь к файлу, который можно использовать для проверки.

Path.GetExtension(your_file_path).equals( "JSON" )

Примечание. Оба логики должны находиться внутри условия цикла.

Ответ 6

Используйте этот код для чтения файла со всеми типами файлов расширения.

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");