В уроке будет написана консольная программа для поиска файлов на C#. Код, который используется для поиска, очень полезен для решения ряда задач. Он пригодится Вам для написания более сложных программ.
Поиск файлов в языке программирования C# осуществляется с помощью метода EnumerateFiles класса Directory, находящегося в пространстве имён System.IO фреймворка .NET.
Чтобы воспользоваться методом, сначала нужно подключить пространство имён с помощью директивы using:
1 |
using System.IO; |
Метод EnumerateFiles имеет следующий прототип:
1 |
Directory.EnumerateFiles(catalog, fileName, SearchOption); |
Аргументы метода:
- catalog (строковый тип string) — путь к каталогу в котором будет производиться поиск. Регистр символов не учитывается.
- fileName (строковый тип string) — имя файла для поиска. Оно может содержать подстановочные поисковые символы: * и ?. Звездочка обозначает произвольное количество символов на её месте, а знак вопроса — один символ на месте подстановки.
- SearchOption — это перечисление задающее опции поиска. Имеет два значения: SearchOption.TopDirectoryOnly (поиск будет выполнен только в текущем каталоге) и SearchOption.AllDirectories (поиск будет произведён в указанном каталоге и во всех его подкаталогах).
Метод EnumerateFiles возвращает перечислимую коллекцию строк — полных имён (путь + имя) файлов, полученных в результате поиска.
Перебирать все результаты поиска удобно с помощью оператора цикла foreach.
Напишем программу на языке программирования C#, демонстрирующую поиск файлов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using System; using System.Collections.Generic; using System.IO; namespace TestConcole { class Program { static void Main(string[] args) { string catalog = @"C:\Users\Игорь\Desktop\Тест"; string fileName = "Файл.txt"; //проводим поиск в выбранном каталоге и во всех его подкаталогах foreach (string findedFile in Directory.EnumerateFiles(catalog, fileName, SearchOption.AllDirectories)) { FileInfo FI; try { //по полному пути к файлу создаём объект класса FileInfo FI = new FileInfo(findedFile); //найденный результат выводим в консоль (имя, путь, размер, дата создания файла) Console.WriteLine(FI.Name + " " + FI.FullName + " " + FI.Length + "_байт" + " Создан: " + FI.CreationTime); } catch //слишком длинное имя файла { continue; } } } } } |
В переменной catalog указан путь к папке, в которой будет происходить поиск. Переменная fileName содержит имя файла для поиска. Поиск происходит с параметром SearchOption.AllDirectories, то есть файлы ищутся в указанном каталоге (catalog) и всех его подпапках.
Коллекция результатов поиска перебирается в цикле foreach (строка 16). С помощью полного имени каждого найденного файла (findedFile) создаётся объект класса FileInfo (строка 19, 23). Данный класс позволяет получать различную информацию о файле. Некоторые параметры выведем в консоль для демонстрации (строка 25): имя файла, полное имя файла, размер в байтах, а также дату и время создания файла.
Во время создания экземпляра класса FileInfo может возникнуть исключительная ситуация, когда имя файла (findedFile) слишком велико. Для перехвата такой ситуации используется оператор try-catch.
Представленную программу для поиска файлов на C# протестируем на специально созданном для этого каталоге с файлами и подкаталогом.
Результаты поиска по запросу «Файл.txt» представлены ниже.
Теперь попробуем выполнить поиск, используя подстановочные символы.
1 |
string fileName = "Файл*копия*"; |
Представленная программа для поиска файлов показывает основные принципы поиска файлов с помощью языка программирования C#.
Поделиться в соц. сетях: