Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 262

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 256 257 258 259 260 261 < 262 > 263 264 265 266 267 268 .. 404 >> Следующая

исключительная ситуация.

Приведенный выше пример конструктора по умолчанию открывает файл в режиме чтение/запись. Для того чтобы задать другой уровень доступа, следует использовать дополнительный параметр — FileAccess:

Filestream aFile = new FileStream('Log.txt', FileMode.OpenOrCreate,

FileAcceseuWrite);

Эта строка кода откроет файл с разрешением доступа на запись. Любая попытка прочитать содержимое этого файла приведет к возникновению исключительной ситуации. Перечислимый тип FileAccess обладает всего тремя типами: Read, write и Readwrite. Следовательно, есть возможность открыть файл только на чтение, только на запись и на чтение и запись одновременно. Это свойство используется в качестве одного из способов варьирования уровня доступа пользователя к файлу в зависимости от уровня его прав.
562 Глава 20

Оба класса File и Fiieinfo предоставляют методы OpenReadO и openWriteO, которые облегчают создание объектов Filestream. Первый открывает метод с режимом доступа “только чтение", а второй, кроме того, разрешает осуществлять запись. Это позволяет упростить обращение к файлу, так что вам теперь не придется указывать всю информацию, как в предыдущих примерах. Например, следующая строка открывает файл Data.txt в режиме “только чтение”:

FileStreara aFile = File.OpenRead('Data.txt');

Обратите внимание на то, что следующий код выполняет те же самые действия:

Fiieinfo aFile = new FiloInfo('Data.txt');

FileStream aFile = aFile OpenReadO ;

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

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

Метод, который реализует данную функциональную возможность, носит название Seek о:

public long Seek(lonfl offset, SeekOrigin origin);

Первый параметр определяет, насколько далеко вперед в бантах должен быть передвинут указатель. Второй параметр определяет, с какой точки вести отсчет, Перечислимый тип SeekOrigin состоит из трех значений: Benin (начало), current (текущая позиция) и End (конец). Следующая строка передвигает указатель файла на восьмой байт, считая с самого первого байта данного файла:

aFile.Seek(8, SeekOrigin.Begin);

Следующая строка кода приведет к перемещению указателя файла на два байта вперед относительно его текущей позиции, Если эта строка будет выполнена непосредственно сразу после предыдущей строки, то указатель будет ссылаться на десятый байт файла:

aFile.Seek(2, SeekOrigin.Current);

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

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

aFi1е.Seek(-5, SeekOrigin.End);
Работа с файлами

563

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

Чтение данных

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

Метод Filestream.Read(> является основным средством, позволяющим осуществлять доступ к данным, содержащимся в файле, на который ссылается объект

FileStreaml

public int Read(byte[] array, int offset, int count);
Предыдущая << 1 .. 256 257 258 259 260 261 < 262 > 263 264 265 266 267 268 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.