Классы StreamWriter и StreamReader используются для чтения и записи символьных данных (например, строк — string). Оба эти класса по умолчанию работают с системой кодировки символов Unicode, однако можно изменить систему кодировки с помощью задания правильно сконфигурированного объекта класса System.Text.Encoding.
Класс StreamWriter является производным от абстрактного класса TextWriter, основные элементы которого описаны в табл. 9.7.
Таблица 9.7.
Основные элементы класса TextWriter
Элемент. | Описание. |
NewLine. | свойство, задающее константу для начала новой строки (newline constant); по умолчанию это символ возврата каретки, за которой следует символ окончания строки (). |
Write (). | перегруженный метод, который записывает данные в текстовый поток без константы начала строки. |
WriteLine (). | перегруженный метод, который записывает данные в текстовый поток с константой начала строки. |
В классе StreamWriter переопределены разные методы базового класса, в том числе и метод Write (). В примере, приведенном ниже, создается новый файл с именем reminders. txt с помощью метода File. CreateText (). Используя метод Write () полученного объекта StreamWriter, в новый файл добавляются текстовые данные:
StreamWriter writer = File. CreateText (@" c: eminders. txt");
writer.WriteLine («He забудь сделать перевод.»); writer. WriteLinefHe забудь позвонить маме."); for (int i = 0; i < 5; i++) writer. Write (i + «»);
// вставляем символ новой строки writer. Write (writer.NewLine);
Класс StreamReader (как и связанный с ним класс StringReader, рассмотренный ниже) является производным от класса от абстрактного класса TextReader, основные элементы которого описаны в табл. 9.8.
Таблица 9.8.
Основные элементы класса TextReader
Элемент. | Описание. |
Peek (). | чтение следующего доступного символа без изменения позиции в потоке; значение -1 указывает на окончание потока. |
Read (). | чтение данных из потока. |
ReadBlock (). | чтение заданного количества символов из текущего потока и запись данных в буфер, начиная с заданного индекса. |
ReadLine (). | чтение строки символов из потока и передача данных в виде строки (если строка пустая, то это «конец файла» — EOF). |
ReadToEnd (). | чтение всех символов, начиная с текущей позиции и до конца потока, и передача их в виде одной символьной строки. |
Для чтения данных из файла с помощью объектов класса StreamReader, который является производным от класса TextReader, используется переопределенный метод ReadLine ():
StreamReader sr = File. OpenText (@" c: eminders. txt"); string input = null;
while ((input = sr. ReadLine ()) ≠ null) Console. WriteLine (input);
Результат:
He забудь сделать перевод.
He забудь позвонить маме.
1 2 3 4 5.