Шрифт:
Ввиду того, что и StringWriter, и StreamWriter получаются из одного и того же базового класса (TextWriter), для них используется приблизительно одинаковая программная логика записи. Однако ввиду самой своей природы, класс StringWriter позволяет извлечь объект System.Text.StringBuilder с помощью метода GetStringBuilder.
Чтобы прочитать данные из символьного потока, используйте соответствующий тип StringReader, который (в соответствии с ожиданиями) функционирует так же, как и родственный ему класс StreamReader. Фактически класс StringReader просто переопределяет наследуемые члены, чтобы обеспечить чтение из блока символьных данных, а не из файла.
Исходный код. Проект StringWriterReaderApp размещен в подкаталоге, соответствующем главе 16.
Работа с BinaryWriter и BinaryReader
И последним из рассмотренных здесь средств чтения/записи будут BinaryReader и BinaryWriter, которые получаются непосредственно из System.Object. Эти типы позволяют читать и записывать дискретные типы данных в соответствующий поток в компактном двоичном формате. Класс BinaryWriter определяет чрезвычайно перегруженный метод Write, позволяющий поместить тип данных в соответствующий поток. Вдобавок к Write, класс BinaryWriter предлагает дополнительные члены, позволяющие получить или установить тип, производный от Stream, и обеспечить поддержку прямого доступа к данным (табл. 16.9).
Таблица 16.9. Основные члены BinaryWriter
Член | Описание |
---|---|
BaseStream | Свойство, доступное только для чтения. Обеспечивает доступ к потоку, используемому с объемом BinaryWriter |
Close | Метод, завершающий двоичный поток |
Flush | Метод, выполняющий очистку двоичного потока |
Seek | Метод, устанавливающий указатель позиции в текущем потоке |
Write | Метод, записывающий значение в текущий поток |
Класс BinaryReader дополняет функциональные возможности, предлагаемые членами BinaryWriter (табл. 16.10).
Таблица 16.10. Основные Члены BinaryReader
Член | Описание |
---|---|
BaseStream | Свойство, доступное только для чтения. Обеспечивает доступ к потоку, используемому с объектом BinaryReader |
Close | Метод, завершающий двоичный поток чтения |
PeekChar | Метод, возвращающий следующий доступный символ без фактического смещения указателя позиции в потоке |
Read | Метод, считывающий заданное множество байтов или символов и запоминающий их во входном массиве |
ReadXXX | Класс BinaryReader определяет множество методов ReadXXX, "захватывающих" следующий тип из потока (ReadBoolean, ReadByte, ReadInt32 и т.д.) |