Theory and Tasks for Students - Spring 2019
Ввод/вывод в файлы

Для работы с файлами необходимо подключить пространство имён System.IO, делается это в начале файла программы: using System.IO;. Любой файл - последовательность битов, которые можно интепретировать как текст в соответсвующей кодировке. Для чтения из файла используется класс StreamReader следующим образом: var sr = new StreamReader("input.txt"); string str = sr.ReadLine(); sr.Close(); При создании потока на чтение указывается имя файла - это либо полный абсолютный путь к нему, начиная с имени диска, либо относительный путь, отсчитываемый от директории, в которой находится исполняемый файл. Если файл не существует, программа аварийно завершит работу.

Как и у класса Console, доступны два метода для чтения - ReadLine и Read. Так же есть метод, позволяющий считать весь файл от начала до конца - ReadToEnd, в таком случае строка будет включать в себя и символы перевода строки. Для проверки, был ли считан файл полностью имеется свойство EndOfStream, его стоит использовать, например, в случае, если необходимо считать данные из файла построчно, но количество строк в нём неизвестно: var sr = new StreamReader("file.in"); while (!sr.EndOfStream) { DoStuff(sr.ReadLine()); } sr.Close(); После работы с файлом поток обязательно надо закрывать методом Close.

Для записи в файл, как можно догадаться, используется класс StreamWriter: var sw = new StreamWriter("output.txt"); sw.WriteLine("1 2 3 4"); sw.Close(); Если файл не существует, он будет создан - в противном случае он будет перезаписан. Для дописывания в имеющийся файл следует добавить флаг append после имени файла, т.к. по умолчанию он имеет значение false: var sw = new StreamWriter("output.txt", true);