Основным для потоков является классSystem. 10. Stream.Он представляет байтовый поток и является базовым для всех остальных классов потоков. Кроме того, он является абстрактным классом, а это означает, что получить экземпляр объекта классаStreamнельзя. В классеStreamопределяется ряд операций со стандартными потоками, представленных соответствующими методами. В табл. 14.1 перечислен ряд наиболее часто используемых методов, определенных в классеStream.

Таблица 14.1. Некоторые методы, определенные в классе stream

Метод

Описание

void Close ()

Закрывает поток

void Flush()

Выводит содержимое потока на физическое устройство

int ReadByte()

Возвращает целочисленное представление следующего байта, доступного для ввода из потока. При обнаружении конца файла возвращает значение -1

int Read(byte[] buffer,

Делает попытку ввести count байтов в массив

intoffset,intcount)

buffer, начиная с элемента buffer[offset]. Возвращает количество успешно введенных байтов

long Seek(longoffset,

Устанавливает текущее положение в потоке по указан

SeekOriginorigin)

ному смещению offset относительно заданного начала отсчета origin. Возвращает новое положение в потоке

void WriteByte(bytevalue)

Выводит один байт в поток вывода

void Write(byte[]buffer,

Выводит подмножество count байтов из массива

intoffset,

buffer, начиная с элемента buffer'i offset]. Воз

intcount)

вращает количество выведенных байтов

Некоторые из методов, перечисленных в табл. 14.1, генерируют исключениеIOExceptionпри появлении ошибки ввода-вывода. Если же предпринимается попытка выполнить неверную операцию, например вывести данные в поток, предназначенный только для чтения, то генерируется исключениеNotSupportedException.Кроме того, могут быть сгенерированы и другие исключения — все зависит от конкретного метода.

Следует заметить, что в классеStreamопределены методы для ввода (или чтения) и вывода (или записи) данных. Но не все потоки поддерживают обе эти операции, поскольку поток можно открывать только для чтения или только для записи. Кроме того, не все потоки поддерживают запрос текущего положения в потоке с помощью методаSeek(). Для того чтобы определить возможности потока, придется воспользоваться одним, а то и несколькими свойствами классаStream.Эти свойства перечислены в табл. 14.2 наряду со свойствамиLengthиPosition,содержащими длину потока и текущее положение в нем.

Таблица 14.2. Свойства, определенные в классе Stream

Свойство

Описание

bool CanRead bool CanSeek

Принимает значение true, если из потока можно ввести данные. Доступно только для чтения

Принимает значение true, если поток поддерживает запрос текущего положения в потоке. Доступно только для чтения

Свойство

Описание

bool CanWrite

Принимает значение true, если в поток можно вывести данные. До

ступно только для чтения

long Length

Содержит длину потока. Доступно только для чтения

long Position

Представляет текущее положение в потоке. Доступно как для чтения,

так и для записи

int ReadTimeout

Представляет продолжительность времени ожидания в операциях

ввода. Доступно как для чтения, так и для записи

int' WriteTimeout

Представляет продолжительность времени ожидания в операциях

вывода. Доступно как для чтения, так и для записи

Классы байтовых потоков

Перейти на страницу:

Похожие книги