Содержание

Работа с текстовыми файлами

Сейчас все наши многочисленные программы работают до поры до времени – открыл программу, что-то сделал, закрыл, и ничего не сохранилось. Давайте мы научимся работать с текстовыми файлами, чтобы наша программа могла что-то после себя оставить.

Я создам на рабочем столе некий текстовый файл и наполню его любым текстом

Файл, наполненный Lorem Ipsum

Чтобы прочитать в коде мой файл, мне необходимо использовать библиотеку System.Io. Добавить я ее могу двумя способами:

  • Прописать вручную вверху кода using System.Io;
  • Писать свой код, а потом нажать alt+enter (или ПКМ, «Быстрые действия и рефакторинг», using System.Io) и импортировать библиотеку

Я воспользуюсь вторым пунктом


Чтение файла

Итак, если я хочу работать с файлами, я так и напишу – File. Я хочу использовать File, а именно (пишу точку) – прочитать весь текст. Я так и напишу – File.ReadAllText(). Внутри необходимо указать путь до файла, я скопирую его из свойств файла

Получившуюся строку я поставлю как значение для переменной, так как метод ReadAllText() возвращает нам весь текст из файла

string myText = File.ReadAllText("D:\\Рабочий стол\\MyFile.txt");

И теперь, я могу вывести в консоль значение этой переменной

string myText = File.ReadAllText("D:\\Рабочий стол\\MyFile.txt"); Console.WriteLine(myText);

Вывод файла с Lorem ipsum

Запись в файл

Также я могу захотеть что-то в свой файл записать. Например, текст из переменной txt. Опять же, я хочу использовать файл, а именно, запись всего текста. Я так и запишу – File.WriteAllText();

string txt = "Текст, который я хочу записать в файл"; File.WriteAllText("D:\\Рабочий стол\\MyText.txt", txt);

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

Запускаем этот код, и помним, что до этого у меня в файле был Lores ipsum. Теперь, после выполнения программы, откроем этот файл, и увидим, что весь старый текст удалился, а поверх него поставился новый

Содержимое файла после записи текста туда

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


Запись в конец файла

Но что если я не хочу перезаписывать предыдущие данные из своего файла, а хочу записать их в конец? Тогда мне нужно использовать добавление текста. Добавление текста всегда запишет текст в конец

Я хочу использовать файл, а именно, добавить весь текст. Сначала я укажу путь до файла, а затем текст, который я хочу добавить

File.AppendAllText("D:\\Рабочий стол\\MyText.txt", "\nНовое значение");

Открыв свой файл, я увижу, что новый текст записался в самый конец.

Содержимое файла после добавление текста в конец

Дополнительные варианты работы с файлами

Если с записью все понятно – я захотела сделать файл и даже если его нет, он создаст новый, то что, если при чтении у меня не будет существовать файла, который я хочу прочитать? Мой код выдаст мне ошибку, а я такого не хочу

Ошибка при чтении файла

Значит я должна сделать проверку на то, существует ли у меня такой файл или нет. Для удобства, вынесу путь до моего файла в отдельную переменную path

Получается, я хочу проверить, есть ли файл. Я хочу использовать файл, а именно, существует ли он. И, в первом предложении, у нас было слово «если». Видим если – ставим условие. Таким образом, если файл существует, я читаю текст внутри него

string path = "D:\\Рабочий стол\\FileDoesNotExist.txt"; if(File.Exists(path)) {     string txt = File.ReadAllText(path); }

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

string path = "D:\\Рабочий стол\\FileDoesNotExist.txt"; if(File.Exists(path)) {     string txt = File.ReadAllText(path); } else {     File.Create(path); }

Таким же образом, используя «File.», можно сделать что угодно со своим файлом – копировать его, переместить, удалить, узнать, когда он был последний раз изменен, установить время когда он был создан, и т.п и т.п. Все необходимые методы можно найти по аналогии: Copy - скопировать, Move - переместить