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

Запись в файл

Другой распространенный вариант посимвольного чтения основан на том, что метод ReadByte в конце потока возвращает -1. Основной цикл выглядит примерно так:

Dim i As Integer i = theFile.ReadByte
Do Until i =-1
Console.Write(i)
i = theFile.ReadByte Loop

Чтение/запись файла на уровне отдельных байтов используется не так уж часто; в основном это необходимо при выполнении низкоуровневых операций. При операциях более высокого уровня часто используется стандартный прием – неструктурированный файловый поток передается конструктору потока, обладающего более широкими возможностями. Этот принцип называется многоуровневой организацией потоков. Например, неструктурированный файловый поток можно передать потоку, автоматически распознающему текст.

Разные способы многоуровневой организации потоков описаны в нескольких ближайших разделах. Но прежде, чем переходить к этим разделам, просмотрите табл. 9.10 – в ней перечислены основные методы и свойства базового класса FileStream. В дальнейшем мы будем использовать эти методы, хотя базовый файловый поток будет скрыт потоками более высоких уровней.

Таблица 9.10. Основные члены класса RleStream.

Метод/свойство Описание
Handle (свойство) Файловый манипулятор операционной системы для файла, инкапсулированного в объекте FileStream. Свойство доступно для чтения
Length (свойство) Размер потока в байтах. Свойство доступно для чтения
Name (свойство) Уточненное имя, переданное конструктору FileStream
Position (свойство) Текущая позиция для операций чтения или записи в потоке (нумерация позиций начинается с нуля). Свойство доступно для чтения и записи
Close Закрывает поток и освобождает все связанные с ним ресурсы
Flush Пересылает все данные из буфера в устройство. Автоматически вызывается при вызове Close
Lock(ByVal position As Long, ByVal length As Long) Блокирует доступ ко всему файлу или его части со стороны других процессов (нумерация позиций начинается с нуля)
Read(ByVal array() As Byte, ByVal offset As Integer, ByVal count As Integer) Читает заданное количество байтов в массив из файлового потока начиная с заданной позиции
ReadByte Читает один байт из файла и перемещает указатель текущей позиции на один байт вперед
Seek(ByVal offset As Long, ByVal origin As SeekOrigin) Устанавливает указатель текущей позиции в потоке в заданное положение
Unlock(ByVal position As Long, ByVal length As Long) Снимает блокировку с ранее заблокированной части файла (нумерация позиций начинается с нуля)
Write(ByVal array() As Byte, ByVal offset As Integer, ByVal count As Integer) Записывает заданное количество байт из массива в файловый поток начиная с заданной позиции
WriteByte Записывает байт в текущую позицию файлового потока
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.