Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект ООП прогр.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
1.9 Mб
Скачать

2. Класс FileStream

Класс FileStream используется для чтения и записи файлов. Мы можем использовать этот класс для чтения и записи байтов, символов, строк и других типов данных. Класс FileStream поддерживает синхронное и асинхронное открытие файлов, синхронные операции чтения и записи (методы Read и Write), а также асинхронные операции чтения и записи (методы BeginRead и BeginWrite). Асинхронные операции завершаются вызовом методов EndRead и EndWrite соответственно. Режим по умолчанию — синхронный; для проверки режима мы используем свойство IsAsync. Для асинхронных операций необходим объект WaitHandle. Метод Seek используется для произвольного доступа к файлам. Свойство Position позволяет нам узнать или установить текущую позицию в потоке. Методы Lock и Unlock служат для предотвращения доступа ко всему файлу или к его части, а также для отмены ранее установленного запрета доступа. Свойство Length возвращает длину потока в байтах, а метод SetLength служит для задания длины потока. Методы ReadByte и WriteByte используются для чтения и записи одного байта. Для других примитивных типов нам необходимы классы BinaryReader и BinaryWriter соответственно.

От класса FileStream наследует класс IsolatedStorageFileSystem (пространство имен System.IO.IsolatedStorage), служащий для чтения, записи и создания файлов в изолированном хранилище. Изолированное хранилище предоставляет в наше распоряжение виртуальную файловую систему, позволяющую читать и записывать данные, недоступные извне. Изолированное хранилище обеспечивает изоляцию данных на уровне пользователя, сборки или домена приложения.

3. Класс MemoryStream

Класс MemoryStream может использоваться для создания потока, содержимое которого хранится не на диске и не в сети, а в памяти. Этот класс задействует байтовый массив, который может иметь либо фиксированную, либо произвольную длину. В последнем случае мы можем изменять размер массива, читать из него и записывать в него. Что касается потока с фиксированной длиной, то в него мы можем только записывать.

Для того чтобы выяснить число байтов, выделенных под поток в памяти, мы пользуемся свойством Capacity, возвращающим данные типа Integer. Свойство Length возвращает реальное число байтов в потоке (значение типа Long), а метод GetBuffer() возвращает массив байтов, в котором располагается поток. Для сохранения всего содержимого потока в байтовом массиве используется метод ToArray(). Метод WriteTo(Stream) служит для копирования всего потока в другой поток.

4. Класс NetworkStream

Этот класс служит для посылки данных по сети. Класс NetworkStream реализует поток, не поддерживающий операцию позиционирования. Поэтому мы не можем использовать свойство Position и метод Seek при работе с потоком этого типа.

Более подробно сетевые функции в Microsoft .NET мы рассмотрим в одной из следующих частей данной статьи.

5. Класс CryptoStream

Этот класс реализует поток, который связывает потоки данных с криптографическими трансформациями. Класс CryptoStream реализован в пространстве имен System.Secutity.Cryptography.

Для шифрования и расшифровки потоков мы должны выбрать провайдеров, которые обеспечивают шифровку и расшифровку. В настоящее время мы можем выбирать между симметричными алгоритмами типа Encryption Standard (DES), RC2, Triple Data Encryption Standard (TripleDES) и Rijndael/AES, асимметричными алгоритмами (которые также известны как публичные ключи) типа RSA, DSA и хэш-алгоритмами типа MD5, SHA1, SHA256, SHA384 и SHA512. Пространство имен System.Security.Cryptography.X509 также содержит минимальную поддержку публичных сертификатов.

Контрольные вопросы:

  1. Класс BufferedStream

  2. Класс FileStream

  3. Класс MemoryStream

  4. Класс NetworkStream

  5. Класс CryptoStream