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

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

Все классы иерархии Stream поддерживают метод Close, освобождающий удерживаемые ресурсы операционной системы (например, файловые манипуляторы или сетевые соединения), поэтому практически во всех программах, работающих с потоками, рекомендуется закрывать поток в блоке Try-Catch-Finallу. Учтите, что вызов Close в секции Finally требует предварительной проверки, поскольку этот метод вызывается лишь для существующих объектов потоков, созданных успешным вызовом конструктора. Проверка перед вызовом Close в секции Finally выглядит примерно так:

Finally
If Not (myFileStream Is Nothing) Then myFileStream.Close()
End Try

Рассмотрите и такую возможность, как реализация IDisposable в классах, выполняющих операции с файлами, и закрытие всех открытых потоков методом Dispose.

Основные классы, производные от Stream, перечислены в табл. 9.8.

Таблица 9.8. Основные классы, производные от Stream.

Класс Описание
FileStream Произвольный доступ к файлам
MemoryStream Представляет блок памяти (часто используется при работе с буферами)
NetworkStream Данные, полученные в виде потока по сетевому соединению. Принадлежит пространству имен System.Net.Sockets
CryptoStream Шифровка и расшифровка данных. Принадлежит пространству имен System.Security.Cryptography
BufferedStream "Оболочка" для поддержки буферизации в потоках, не обладающих этой возможностью (при использовании позволяет задать размер буфера). Например, автоматическая буферизация ввода используется в файловых потоках, но отсутствует в сетевых потоках. Если потребуется организовать буферизацию для сетевого потока, воспользуйтесь классом BufferedStream и методикой, описанной далее в этой главе

Примечание
В .NET Framework входят классы для работы с XML, спроектированные по образцу класса Stream. Впрочем, пространства имен XML в .NET велики и сложны, и о них вполне можно было бы написать отдельную книгу
.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.