Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс_ред1 С#.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1.8 Mб
Скачать

Классы для работы с потоками

На базе класса System.IO.Stream создано несколько производных классов, специально предназначенных для работы с потоками ввода и вывода.

Класс FileStream, как это видно из его названия, предназначен для работы с файлами через потоки ввода и вывода. Он обеспечивает позиционирование внутри потоков ввода и вывода методом Seek. Это позволяет выполнять прямой доступ к файлам.

С помощью класса CryptoStream можно организовать ввод и вывод данных в зашифрованном виде.

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

С помощью класса NetworkStream можно осуществлять удаленный ввод и вывод данных через сетевое соединение.

Класс BufferedStream обеспечивает буферизацию при работе с потоками ввода и вывода. Буферизация операций ввода и вывода в большинстве случаев значительно ускоряет работу приложений, так как при ее использовании сокращается количество обращений к системе для обмена данными с внешними устройствами.

Классы для работы с потоками текстовых символов

Специально для работы с потоками текстовых символов в кодировке UNICODE в библиотеке классов Microsoft .NET Framework предусмотрены классы System.IO.TextReader и System.IO.TextWriter. Первый из этих классов предназначен для потоков ввода, а второй — для потоков вывода.

С помощью класса StreamReader, созданного на основе класса System.IO.TextReader, программа может читать отдельные байты входного потока символов. Аналогично класс StreamWriter, созданный на основе класса System.IO.TextWriter, позволяет писать байты символов в выходной поток.

Классы StringReader и StringWriter, созданные на базе классов System.IO.TextReader и System.IO.TextWriter, соответственно предназначены для чтения и записи текстовых строк, т.е. данных типа string.

Перечисления

При работе с потоками, файлами и каталогами используются перечисления FileAccess, FileMode, FileShare и SeekOrigin. Они содержат определения констант, нужных для определения режимов создания и открытия файлов, режимов совместного доступа к файлу, а также позиции при произвольном доступе к файлам.

Все эти константы будут рассматриваться далее по мере изложения материала этого раздела.

Создание потоков, связанных с файлами

Если вам нужно создать входной или выходной поток, связанный с локальным файлом, содержащим двоичные данные, следует воспользоваться классами BinaryWriter и BinaryReader из библиотеки Microsoft .NET Framework. Что же касается чтения из файла или записи в файл текстовых данных, то для решения этой задачи обычно используются классы StreamReader и StreamWriter.

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

Обращаем ваше внимание на то, что система сборки мусора, встроенная в среду исполнения Microsoft .NET Framework, следит за использованием только объектов, находящихся в оперативной памяти, таких, как переменные, массивы, экземпляры объектов, созданных на базе классов и т. п. Что же касается потоков, связанных с файлами, то программист сам обязан следить за их открытием и закрытием.