Иллюстрированный самоучитель по Visual Basic .NET

TextReader, TextWriter и производные классы. Объектные потоки: сохранение и восстановление объектов.

Двоичные потоки чтения/записи хорошо подходят для случаев, когда программисту точно известен порядок следования данных в двоичном формате, но прочитать полученный файл бывает непросто. Таким образом, для хранения обычного текста в файле лучше поискать другой вариант. В этой стандартной ситуации вместо пары BinaryReader/BinaryWriter следует использовать пару StreamReader/StreamWriter. По функциональным возможностям классы StreamReader и StreamWriter близки к традиционным средствам последовательного доступа к файлам из прежних версий VB (если не считать того, что в этих классах появилась поддержка Unicode). В классе StreamReader помимо метода Read также имеется удобный метод ReadToEnd, позволяющий прочитать весь файл за одну операцию.

Обратите внимание, что эти классы объявлены производными от абстрактных классов TextReader и TextWriter, а не от Stream. Эти абстрактные классы, объявленные с атрибутом Must Inherit, содержат общие средства чтения/записи текста. Их методы перечислены в табл. 9.11 и 9.12.

Таблица 9.11. Основные методы класса TextReader.

Метод Описание
Close Закрывает существующий поток TextReader и освобождает все системные ресурсы, связанные с ним
Peek Возвращает следующий символ в потоке без смещения указателя текущей позиции
Read Читает один символ из входного потока. Перегруженная версия читает в символьный массив определенное количество символов начиная с заданной позиции
ReadLine Читает символы до комбинации CR+LF и возвращает их в виде строкового значения. Если текущая позиция находится в конце файла, метод возвращает Nothing
ReadToEnd Читает все символы от текущей позиции до конца TextReader и возвращает их в виде одной строки (метод особенно удобен при работе с небольшими файлами)

Таблица 9.12. Основные методы класса TextWriter.

Метод Описание
Close Закрывает существующий поток TextWriter и освобождает все системные ресурсы, связанные с ним
Write Перегруженные версии метода позволяют записывать в поток любые базовые типы данных в текстовом формате
WriteLine Перегружается для записи в поток любых базовых типов данных в текстовом формате, за которыми записывается комбинация CR+LF

Примечание
Свойства Console.In и Console.Out используемые при консольном вводе-выводе, в действительности являются экземплярами классов TextReader и TextWriter. Методы Соnsole.Setln и Console.SetOut позволяют перенаправить стандартный ввод и вывод любым классам *Reader и *Writer соответственно
.

Поскольку классы TextReader и TextWriter являются абстрактными, программы работают с конкретными реализациями StreamReader и StreamWriter. Как и в случае с классами BinaryReader и BinaryWriter, при создании объектов StreamReader и StreamWriter конструктору обычно передается существующий объект потока:

myFile = New FileStreamtfileName.FileMode.Open, FileAccess.Read)
textFile= New StreamReader(myFile)

Для получения объекта также можно воспользоваться методами класса File. Пример неявного создания объекта StreamReader при создании файлового потока продемонстрирован ниже:

Dim aStreamReader As StreamReader
aStreamReader = File.OpenText ("sample.txt")

Объекты класса StreamWriter создаются аналогичным образом:

Dim aStreamWriter As StreamWriter
aStreamWriter = File.CreateText ("test.txt")
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.