Программная работа с файловой системой с помощью пространства имен System.IO

Программные решения для бизнеса

Переходим к новой теме, сегодня поговорим о работе с файлами и папками и простом способе их структуризации. Пришло время генеральной уборки, давайте разработаем небольшое консольное приложение, которое поможет нам ускорить этот процесс.
Глоссарий
Для успешного освоения материала рекомендуем вам изучить следующие понятия:
Класс
Class. Элемент программного обеспечения, описывающий абстрактный тип данных и его частичную или полную реализацию
Метод
Method. Функция или процедура, принадлежащая какому-то классу или объекту, состоящая из некоторого количества операторов для выполнения какого-то действия и имеющая набор входных аргументов
Видеолекция
Конспект

Демонстрация работы с пространством имен System.IO
На данном занятии будет разработано простое консольное приложение для структурирования файлов с произвольного носителя. Итогом работы приложения будет служить набор папок, содержащих файлы, отсортированные в соответствие с критериями сортировки, а также файл Info.txt с информацией о количестве отсортированных документов разных типов. Основные шаги построения приложения:

  1. Начало работы в Main()
  2. Реализация перебора папок
  3. Реализация первичной сортировки файлов
  4. Реализация перемещения файлов
  5. Уточнение критериев сортировки файлов
  6. Завершение работы с Main()
Важно
Для работы с каталогами в пространстве имен System. IO предназначены два класса со схожими возможностями: класс Directory и DirectoryInfo. На данном занятии преимущественно используется DirectoryInfo
Начало работы в Main()
1. Получаем путь к диску
Важно
Путь запрашивается у пользователя и записывается в переменную directoryPath
2. Выводим информацию о диске
Важно
Информация о диске (название, общий объем и свободное место в мегабайтах) выводятся с помощью свойств класса DriveInfo
Реализация метода перебора папок
1. Готовим переменную для хранения пути к корневой директории и создаем метод для перебора подкаталогов корневой директории
Важно
Путь к корневой директории записывается в переменную _rootDirectory. Метод SearchDirectories() будет осуществлять поиск в _rootDirectory
2. Создаем папку для хранения отсортированных файлов
Важно
После сортировки все файлы будут распределены на изображения, документы и прочее
3. Реализуем тело метода фильтрации каталогов
Важно
Метод SearchDirectories() рекурсивно разбирает файлы методом FilterFiles() во всех подкаталогах данного каталога. Функциональность работы для работы с файлами предоставляют классы File и FileInfo
Реализация первичной сортировки файлов
Важно
Метод GetFiles() позволяет получить все файлы в данной директории. С помощью цикла foreach файлы далее распределяются по папкам в зависимости от их типа (изображения, файлы, прочее)
Реализация перемещения файлов
Важно
Метод MoveFile() перемещает файл (методом MoveTo()) в папку для хранения отсортированных файлов. Наличие дубликатов проверяется свойством Exists. Если файл является дубликатом, в его название с помощью метода Path. GetFileNameWithoutExtension() добавляется «(1)» перед расширением
Уточнение критериев сортировки файлов
1. Уточняем сортировку изображений
Важно
Изображения дополнительно сортируются по годам. Свойство LastWriteTime позволяет получить дату создания изображения
2. Уточняем сортировку документов
Важно
Документы дополнительно сортируются по размеру (менее 1 Мб; более 1 Мб и менее 10 Мб; более 10 Мб). Для получения информации о размере используется свойство Length. Так же, как и изображения, документы далее перемещаются с помощью метода «MoveFile (fileInfo, lengthDirectory)»
3. Уточняем сортировку прочих файлов
Важно
Прочие файлы (при наличии) перемещаются в папку «Прочее»
Завершение работы с Main()
1. Удаляем пустые каталоги
Важно
Пустые каталоги удаляются с помощью метода Delete() с параметром «Recursive=true», который разрешает удалять все подкаталоги
2. Создаем счетчики для хранения информации о количестве обработанных файлов разных типов
Важно
Для каждого типа файлов создается свой счетчик
3. Используем счетчик для подсчета количества обработанных файлов
Важно
Счетчик увеличивается на один после каждого перемещения файла. Аналогичный код добавляется после перемещения документов и прочих файлов
4. Выводим итоговую информацию в консоль и в файл
Важно
Текстовый файл «Инфо.txt» создается с помощью метода WriteAllText()
Завершение работы с Main()
Вы узнали об основных методах работы с файлами и каталогами, которые предоставляются пространством имен System.IO. Теперь давайте перейдем от теории к практике!
Интерактивное задание
Тест
Для закрепления полученных знаний пройдите тест
Стартуем!
Для вывода информации о диске используется метод:
Дальше
Проверить
Узнать результат
Пользователь решил изменить приложение так, чтобы файлы Excel сортировались в отдельную папку. В какой из указанных методов потребуется внести изменения?
Дальше
Проверить
Узнать результат
В каких единицах будет дан размер файла после выполнения команды «fileInfoLength / 1024»?
Дальше
Проверить
Узнать результат
К сожалению, вы ответили неправильно
Прочитайте лекцию и посмотрите видео еще раз
Пройти еще раз
Неплохо!
Но можно лучше. Прочитайте лекцию и посмотрите видео еще раз
Пройти еще раз
Отлично!
Вы отлично справились. Теперь можете ознакомиться с другими компетенциями
Пройти еще раз