• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта


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

Потоки данных

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

  1. Read – метод чтения данных из потока. Иногда сводится к простейшему чтению одного байта, но во многих производных классах используются сложные методы для чтения данных большими порциями.
  2. Write – метод записи данных в поток. Как и предыдущий метод, может сводиться к простейшей записи одного байта, но может задействовать и фрагменты данных большего размера.

Впрочем, этим возможности не ограничиваются. Кроме простого перемещения от первого байта к последнему реализация класса Stream может поддерживать и другие способы – например, перемещение в обратном направлении или непосредственный переход к заданной позиции в потоке. Такое возможно для файловых потоков, но не имеет смысла (а следовательно, и не реализуется) для потоков, основанных на сетевых соединениях. Свойство CanSeek позволяет узнать, поддерживает ли поток произвольный доступ. Если свойство равно True, значит, в производном классе поддерживаются реализации методов Seek и SetLength, а также свойств Position и Length.

Примечание
В реализации метода Seek обычно используются три значения (Begin, Current и End), входящие в удобный перечисляемый тип SeekOrigin
.

В табл. 9.7 перечислены основные методы абстрактного класса Stream, смысл которых должен сохраниться и в производных классах.

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

Метод/свойство Описание
CanRead (свойство) Логический признак поддержки чтения
CanSeek (свойство) Логический признак поддержки произвольного доступа (позиционирования)
CanWrite (свойство) Логический признак поддержки записи
Length (свойство) Длина потока в байтах
Position (свойство) Позиция в текущем потоке (тип Long). Свойство доступно для чтения, а в некоторых потоках – и для записи
Close Закрывает поток и освобождает используемые ресурсы (например, файловые манипуляторы операционной системы)
Flush Записывает данные и стирает содержимое всех буферов, используемых потоком
Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) Читает заданное количество байтов начиная с текущей позиции с прибавлением заданного смещения offset. Возвращает количество успешно прочитанных байтов
Read Byte Читает отдельный байт (почему-то в формате Integer) в текущей позиции потока. Если текущая позиция находится в конце потока, возвращает – 1
Write(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) Записывает заданное количество байтов начиная с текущей позиции с прибавлением заданного смещения offset
WriteByte(ByVal value As Byte) Записывает байт в текущую позицию потока
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.