Работа с файловой системой
- 3 мин
.NET содержит встроенные типы для работы с файловой системой, расположенные в пространстве имен System.IO.
Здесь вы узнаете о типах, доступных в System.IO, используя C# для чтения файловой системы и поиска файлов и каталогов.
Сценарий
Крупные розничные компании часто записывают данные в файлы, чтобы их можно было обработать в пакетном режиме.
Каждый из магазинов Tailwind Traders записывает общие объемы продаж в файл и отправляет этот файл в центральный пункт. Чтобы использовать эти файлы, компании необходимо создать пакетный процесс, который может работать с файловой системой.
Включите пространство имен System.IO
Пространство имен System.IO содержит встроенные типы, которые позволяют взаимодействовать с файлами и каталогами. Например, можно получить коллекции файлов и каталогов на основе критериев поиска и getset свойств файлов и каталогов. Кроме того, типы из пространства имен System.IO можно использовать для синхронного и асинхронного чтения и записи потоков данных и файлов.
Пока мы сосредоточимся лишь на том, что нужно знать для работы с каталогами с помощью класса Directory из пространства имен System.IO. Класс Directory предоставляет статические методы для создания, перемещения и перечисления элементов в каталогах и вложенных каталогах.
Список всех каталогов
Класс Directory часто используется для перечисления (или перечисления) каталогов. Например, структура файла Tailwind Traders имеет корневую папку, называемую хранилищами. В этой папке находятся вложенные папки, упорядоченные по номеру магазина, и внутри этих папок находятся файлы итогов продаж и инвентаризации. Структура выглядит как в следующем примере:
📂 stores
📄 sales.json
📄 totals.txt
📂 201
📄 sales.json
📄 salestotals.json
📄 inventory.txt
📂 202
Для чтения и перечисления имен каталогов верхнего уровня используйте функцию Directory.EnumerateDirectories.
IEnumerable<string> listOfDirectories = Directory.EnumerateDirectories("stores");
foreach (var dir in listOfDirectories) {
Console.WriteLine(dir);
}
// Outputs:
// stores/201
// stores/202
Список файлов в указанном каталоге
Для получения списка имен всех файлов в каталоге можно использовать функцию Directory.EnumerateFiles.
IEnumerable<string> files = Directory.EnumerateFiles("stores");
foreach (var file in files)
{
Console.WriteLine(file);
}
// Outputs:
// stores/totals.txt
// stores/sales.json
Получение списка всего содержимого в каталоге и всех подкаталогах
Функции Directory.EnumerateDirectories и Directory.EnumerateFiles имеют перегрузку, которая принимает параметр, указывающий, что файлы и каталоги должны соответствовать шаблонам поиска.
Они также имеют еще одну перегрузку, которая принимает параметр для указания того, следует ли выполнять рекурсивный обход указанной папки и всех ее вложенных папок.
// Find all *.txt files in the stores folder and its subfolders
IEnumerable<string> allFilesInAllFolders = Directory.EnumerateFiles("stores", "*.txt", SearchOption.AllDirectories);
foreach (var file in allFilesInAllFolders)
{
Console.WriteLine(file);
}
// Outputs:
// stores/totals.txt
// stores/201/inventory.txt
В следующем упражнении вы используете класс Directory для динамического чтения основного каталога магазинов Tailwind Traders, чтобы найти все файлы sales.json.
Проверьте свои знания
Обратная связь
Были ли сведения на этой странице полезными?
Нет
Нужна помощь с этой темой?
Хотите попробовать использовать Ask Learn для уточнения или руководства по этой теме?