Найти файл с определенным расширением в папке - PullRequest
86 голосов
/ 30 июня 2010

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

Ответы [ 6 ]

157 голосов
/ 30 июня 2010

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

 string[] files = System.IO.Directory.GetFiles(path, "*.txt");
26 голосов
/ 30 июня 2010

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

 Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
13 голосов
/ 30 июня 2010

Это довольно просто, на самом деле. Вы можете использовать класс 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));

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

1 голос
/ 30 декабря 2016

Метод ниже возвращает только файлы с определенным расширением (например: файл с .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));
    }
0 голосов
/ 07 апреля 2017

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

string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");
0 голосов
/ 24 марта 2017

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

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

Directory.GetFiles ("your_folder_path) [i] .Contains (" *. Txt ")

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

Path.GetExtension (your_file_path) .Equals (".json ")

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

...