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


Чтение и запись двоичных данных: классы BinaryReader и BinaryWriter - часть 2


Sub Write(String)

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

К сожалению, хотя для записи в поток существуют различные перегруженные версии метода Write, при чтении записанной информации средствами класса BinaryReader не существует аналогичных перегруженных методов Read. Вместо этого для каждого типа данных определяется собственная версия Read — ReadString, Readlnt32 (для типа Integer), ReadChar и т. д. Вы должны знать, что и в каком порядке было записано в файл; в противном случае восстановить исходные данные не удастся. Следующий фрагмент показывает, как выполняется чтение в приведенном выше примере:

aFileStream = New FileStream("с:\data.txt", FileMode.Open. FileAccess.Read)

Dim myBinaryReader As New BinaryReader(aFileStream) Console._

WriteLine( myBinaryReader.ReadString)

Console.WriteLine(myBinaryReader.Readlnt32)

Рис. 9.3. Файл, записанный с применением класса BinaryWriter, в шестнадцатеричном представлении

Если вы хотите организовать обобщенное чтение двоичных данных и вас не интересует, какому типу соответствуют прочитанные байты, воспользуйтесь методом PeekChar. Этот метод проверяет, равен ли следующий байт -1 (признак конца файла в .NET). Цикл выглядит примерно так:

While myBInaryReader.PeekChar() <> -1

' Прочитать следующий байт

Loop

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

 




- Начало -  - Назад -  - Вперед -



Книжный магазин