Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
FileStream(string filename, FileMode mode)Стр 1 из 4Следующая ⇒
Лабораторная работа №3. Ввод, вывод и сериализация объектов
Цель работы Изучить пространства имен и классы библиотеки .NETFramework, используемые для ввода-вывода данных. Познакомиться с понятием и методами сериализации и десериализации объектов.
Сведения из теории Пространство имен System.IO Пространство имен System.IO содержит в себе большой набор типов, которые предназначены для выполнения операций с файлами и другими операциями ввода/вывода. Большинство классов System.IO предназначено для работы с каталогами и файлами на диске. Однако есть и такие типы, которые позволяют работать с буферами в оперативной памяти или с областями оперативной памяти напрямую. Наиболее важные неабстрактные классы System.IO представлены в таблице:
Помимо обычных классов, представленных в таблице, в System.IOпредусмотрено также большое количество перечислений и абстрактных классов. Абстрактные классы (Stream, TextReader, TextWriter и т.п.) определяют общие полиморфические интерфейсы для производных классов. Некоторые из этих абстрактных и производных классов далее рассмотрены более подробно.
Классы потоков Центральную часть потоковой C#-системы занимает абстрактный класс System.IO.Stream. Класс Stream представляет байтовый поток и является базовым для всех остальных потоковых классов. Все классы, производные от Stream, предназначены для работы с блоками двоичных данных (для текстовых данных есть свои классы). Иерархия классов, производных от System.IO.Stream, представлена на рисунке 4.1.
Рис. 4.1. Классы, производные от Stream
В классе Stream определен набор стандартных потоковых операций. Наиболее применяемые методы, определенные в классе Stream, перечислены в таблице:
В общем случае при возникновении ошибки ввода-вывода приведенные методы генерируют исключение типа IOException. При попытке выполнить некорректную операцию, например, записать данные в поток, предназначенный только для чтения, генерируется исключение типа NotSupportedException. В классе Stream определены методы, которые считывают и записывают данные. Однако не все потоки поддерживают все эти операции, поскольку возможен вариант, когда поток открывается только для чтения или только для записи. Кроме того, не все потоки поддерживают функцию установки в заданную позицию с помощью метода Seek(). Чтобы определить возможности потока, следует использовать соответствующие свойства класса Stream. Свойства приведены в следующей таблице:
Чтобы создать байтовый поток, связанный с файлом, нужно создать объект класса FileStream. В этом классе определено несколько конструкторов. Чаще всего из них используется следующий: FileStream(string filename, FileMode mode) Этот конструктор открывает файл для доступа с разрешением чтения и записи. Здесь элемент filename означает имя файла, который необходимо открыть, причем оно может включать полный путь к файлу. Элемент mode означает режим открытия файла и может принимать одно из значений, определенных перечислением FileMode:
Если попытка открыть файл оказалась неуспешной, генерируется исключение. Если файл невозможно открыть по причине его отсутствия, генерируется исключение FileNotFoundException. Если файл невозможно открыть из-за ошибки ввода/вывода, генерируется исключение типа IOException. Возможны также исключения следующих типов: ArgumentNullException (если имя файла представляет собой null-значение), ArgumentException (если некорректен параметр mode), SecurityException (если пользователь не обладает правами доступа) и DirectoryNotFoundException (если некорректно задан каталог). Если необходимо ограничить доступ только чтением или только записью, нужно использовать следующий конструктор: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2018-06-01; просмотров: 192. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |