Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа9_C#.doc
Скачиваний:
121
Добавлен:
23.03.2015
Размер:
143.87 Кб
Скачать

1.3 Объект FileStream

Объект FileStreamпредставляет поток, указывающий на какой-либо файл на диске или на местоположение в сети. Хотя этот класс и обладает методами для чтения из файлов и записи в файлы байтов, чаще для выполнения этих функций придется обращаться к классамStreamReaderиStreamWriter. Это происходит потому, что классFileStreamоперирует байтами и массивами байтов, в то время как классыstreamоперируют символьными данными.

Существует несколько способов создания объекта FileStream. Его конструктор обладает большим количеством перегрузок/версий, однако в самом простом случае он требует передачи двух аргументов — имени файла и значения перечислимого типаFileMode:

FileStream aFile = new FileStream("Log.txt", FileMode.OpenOrCreate);

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

Элементы перечисляемого типа FileMode

Описание

Append

Открывает файл (если он существует), переводит указатель файла в его конец или создает новый файл. FileMode. Append может использоваться только совместно с членом перечислимого типа FileAccess.Write.

Create

Создает новый файл; если файл с таким именем уже существует, то он уничтожается.

CreateNew

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

Open

Открывает существующий файл. Если указанного файла не существует, генерируется исключительная ситуация.

OpenOrCreate

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

Truncate

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

1.4 Позиция внутри файла

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

1.5 Асинхронный доступ к файлам

Доступ ко всем файлам в большинстве примеров осуществлялся синхронным образом. Это означает, что выполнение приложения будет приостановлено до тех пор, пока операция чтения или записи не будет завершена. Это оказывается вполне приемлемым для большинства приложений, однако иногда возникает необходимость записать очень большое количество данных, при этом у приложения совершенно отсутствует необходимость дожидаться окончания операции записи. Или, например, требуется считать информацию из файла, находящегося в сети с медленным соединением; в этом случае ваше приложение могло бы продолжать выполнять какую-либо другую работу, параллельно внося соответствующие изменения в управляющие элементы пользовательского интерфейса, отражающие процесс загрузки данных. Такой способ доступа к данным называется асинхронным. Обычно это означает, что приложение может выполнять какие-либо другие действия параллельно с неким процессом, например, с операцией ввода-вывода файла, вместо того чтобы дожидаться окончания этого процесса.