Студопедия
МОТОСАФАРИ и МОТОТУРЫ АФРИКА !!!


Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

EndWrite




Flush Записать данные из буфера в связанный с потоком источник данных и очистить

буфер. Если для данного потока буфер не используется, то этот метод ничего не

делает

Length Возвратить длину потока в байтах

Position Возвратить текущую позицию в потоке

Read, Считать последовательность байтов (или один байт) из текущего потока

ReadByte и переместить указатель в потоке на количество считанных байтов

Seek Установить текущий указатель потока на заданную позицию

SetLength Установить длину текущего потока

Write, Записать последовательность байтов (или один байт) в текущий поток
WriteByte и переместить указатель в потоке на количество записанных байтов

Класс FileStream реализует эти элементы для работы с дисковыми файлами. Для определения режимов работы с файлом используются стандартные перечис­ления FileMode, FileAccess и FileShare. Значения этих перечислений приведены в табл. 11.2—11.4. В листинге 11.1 представлен пример работы с файлом. В при­мере демонстрируются чтение и запись одного байта и массива байтов, а также позиционирование в потоке.

Листинг 11.1. Пример использования потока байтов

using System;

using System.IO;

namespace ConsoleApplication1

{

class Class1

{

static void Main()

{

FileStream f = new FileStream("test.txt", FileMode.Create,

FileAccess.ReadWrite);

f.WriteByte(100); //в начало файла записывается число 100

byte[] x = new byte[10];

for (byte i = 0; l < 10; ++i)

{

x[i] = (byte)(10 - i);

f.WriteByte(i); // записывается 10 чисел от 0 до 9

}

f.Write(x, 0, 5); // записывается 5 элементов массива

byte[] у = new byte[20];

f.Seek(0, SeekOrigin.Begin); // текущий указатель - на начало

f.Read(у, 0, 20); // чтение из файла в массив

foreach (byte elem in у)

Console.Write(" " + elem);

Console.WriteLine();

f.Seek(5.SeekOngin.Begin); //текущий указатель на 5-й елемент

int a = f.ReadByte(); // чтение 5-го элемента

Console.WriteLine(a);

а = f.ReadByte(); // чтение 6-го элемента

Console.WriteLine(a);

Console.WriteLine("Текущая позиция в потоке" + f.Position);

f.Close();

}

}

}

Результат работы программы:

100 0123456789 10 98760000

Текущая позиция в потоке 7

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

Для установки желаемой позиции чтения используется метод Seek, имеющий два параметра: первый задает смещение в байтах относительно точки отсчета, зада­ваемой вторым. Точки отсчета задаются константами перечисления SeekOrigin: начало файла — Begin, текущая позиция — Current и конец файла — End.




В данном примере файл создавался в текущем каталоге. Можно указать и пол­ный путь к файлу, при этом удобнее использовать дословные литералы, речь о которых шла в разделе «Литералы» (см. с. 30), например:

FileStream f = new FileStream( @"D:\C#\test.txt", FileMode.Create, FileAccess.ReadWrite );

В дословных литералах не требуется дублировать обратную косую черту.

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

□ FileNotFoundException, если файла с указанным именем в указанном каталоге
не существует;

□ DirectoryNotFoundException, если не существует указанный каталог;

□ ArgumentException, если неверно задан режим открытия файла;

□ IOException, если файл не открывается из-за ошибок ввода-вывода.
Возможны и другие исключительные ситуации.

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

try

{

FileStream f = new FileStream( @"d:\C#\test.tx", FileMode.Open,

FileAccess.Read );

// действия с файлом f.Close(); }

catch( FileNotFoundException e )

{

Console.WriteLine( e.Message );

Console.WriteLine( "Проверьте правильность имени файла!" ):

return;

}

catch( Exception e )

{

Console.WriteLine( "Error: " + e.Message );

return;

}

При закрытии файла освобождаются все связанные с ним ресурсы, например, для файла, открытого для записи, в файл выгружается содержимое буфера. По­этому рекомендуется всегда закрывать файлы после окончания работы, в осо­бенности файлы, открытые для записи. Если буфер требуется выгрузить, не за­крывая файл, используется метод Flush.





Дата добавления: 2015-05-22; просмотров: 294; Опубликованный материал нарушает авторские права? | Защита персональных данных | ЗАКАЗАТЬ РАБОТУ


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Учись учиться, не учась! 10548 - | 7960 - или читать все...

 

34.237.51.159 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.003 сек.