9_Работа с файловой системой

Урок 9 : Работа с файловой системой

О чём этот урок

В этой практике вы создадите каталог для данных программы, прочитаете и запишете обычный текст, поработаете с потоками и получите информацию о созданных файлах.


Теория

Вопросы для самопроверки

  1. Чем абсолютный путь отличается от относительного?
  2. Почему для построения пути лучше использовать Path.Combine(), а не конкатенацию строк?
  3. Как проверить существование каталога и создать его?
  4. Как получить список файлов в каталоге?
  5. Чем File.WriteAllText() отличается от File.AppendAllText()?
  6. В чём разница между File.ReadAllText() и File.ReadAllLines()?
  7. Для чего применяются StreamWriter и StreamReader?
  8. Зачем потоки помещают в конструкцию using?
  9. Как получить размер и расширение файла?


Практика

Как выполнять задания

Откройте файл Lesson9.cs для выполнения заданий. Создавайте все файлы внутри каталога Data в текущей рабочей директории программы. После каждого задания проверяйте не только вывод консоли, но и содержимое созданных файлов.

Задания

Задание 1. Каталог для данных

Создайте метод CreateDataDirectory(), который:

  • получает текущую рабочую директорию;
  • строит путь к вложенному каталогу Data через Path.Combine();
  • создаёт каталог, если он отсутствует;
  • возвращает путь к каталогу в виде string.

Вызовите метод и выведите полученный путь в консоль.

Задание 2. Запись и чтение TXT

Запросите у пользователя:

  • имя игрока;
  • уровень;
  • количество очков.

Запишите данные в файл player.txt:

Имя: Alex
Уровень: 5
Очки: 1250

После записи:

  • проверьте существование файла через File.Exists();
  • прочитайте файл через File.ReadAllText();
  • выведите содержимое в консоль.
Задание 3. Работа со StreamWriter и StreamReader

Создайте список из пяти строк с названиями игровых предметов.
Запишите предметы в items.txt с помощью StreamWriter: каждый предмет должен находиться на отдельной строке.

Затем прочитайте файл через StreamReader построчно и выведите строки в формате:

1. Меч
2. Щит
3. Зелье

Для обоих потоков используйте конструкцию using.

Задание 4. Список файлов

Напишите метод PrintFiles(string directoryPath), который выводит информацию обо всех файлах каталога Data:

  • имя файла;
  • расширение;
  • размер в байтах.

Используйте Directory.GetFiles(), методы класса Path и класс FileInfo.

Пример:

player.txt | .txt | 52 байт
items.txt | .txt | 68 байт
Задание 5. Менеджер текстовых файлов

Объедините предыдущие задания в программу с меню:

1. Записать данные игрока
2. Прочитать данные игрока
3. Записать список предметов
4. Прочитать список предметов
5. Показать файлы каталога Data
6. Удалить выбранный файл
0. Выход

Требования:

  • меню работает в цикле до выбора пункта 0;
  • пути создаются только через Path.Combine();
  • каталог Data создаётся при запуске;
  • перед чтением и удалением программа проверяет существование файла;
  • перед удалением программа запрашивает подтверждение;
  • после каждой операции выводится сообщение о результате.

📋 Вернуться к теории урока 9