русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Значение Описание


Дата добавления: 2013-12-23; просмотров: 702; Нарушение авторских прав


Значение Описание

Алгоритм работы с файловыми потоками

Использование классов файловых потоков в программе предполагает следующие операции:

  1. Создание потока и связывание его с физическим файлом.
  2. Обмен информацией (чтение-запись).
  3. Закрытие файла.

Каждый файл можно создавать разными способами и открывать в различных режимах (файлы можно открывать для чтения, только для записи или для чтения и записи).

Режимы доступа к файлу содержаться в переменной FileAccess, определенном в пространстве имен System.IO. Константы перечисления приведены в таблице 11.2.

 


Таблица 11.2- Значения FileAccess

Read Открыть файл только для чтения

ReadWrite Открыть файл для чтения и записи

Write Открыть файл для записи

Возможные режимы открытия файла определены в переменной FileMode (таблица 11.3)

Таблица 11.3 - Значения FileMode

Append Открыть файл, если он существует, и установить текущий

указатель в конец файла. Если файл не существует, создать

новый файл

Create Создать новый файл. Если в каталоге уже существует файл с

таким же именем, он будет стерт

CreateNew Создать новый файл. Если в каталоге уже существует файл с

таким же именем, возникает исключение IOException

Open Открыть существующий файл

OpenOrCreate Открыть файл, если он существует. Если нет создать файл с

таким именем

Truncate Открыть существующий файл. После открытия он должен быть

обрезан до нулевой длины

 

Режим FileMode.Append можно использовать только совместно с доступом типа FileAccess.Write, то есть для файлов, открываемых для записи.

Байтовые файлы (потоки)

Ввод-вывод в файл на уровне байтов выполняется с помощью класса FileStream, основные элементы которого представлены в таблице 11.4.

Таблица 11.4 - Элементы класса Stream

Элемент Описание

BeginRead, Начать асинхронный ввод или вывод



BeginWrite

CanRead, Свойства, определяющие, какие операции поддерживает поток: чтение,

CanSeek, прямой доступ и/или запись

CanWrite

Close Закрыть текущий поток и освободить связанные с ним ресурсы (сокеты,

указатели на файлы)

EndRead, Ожидать завершения асинхронного ввода; закончить асинхронный вывод

EndWrite

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

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

то этот метод ничего не делает

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

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

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

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

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

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

Write, Записать последовательность байтов (или один байт) в текущий поток

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

Байтовый поток класс FileStream реализует эти элементы для работы с дисковыми файлами. Для определения режимов работы с файлом используются стандартные перечисления FileMode, FileAccess.


Пример работы с байтовым файлом

//Демонстрация чтения и записи одного байта и массива байтов, а также //позиционирование в потоке.

using System;

using System.IO;

namespace ConsoleApplication1

{ class Class1

{ static void Main()

{

//создание файловой переменной и связывание с байтовым потоком - //файлом на диске с именем est.txt

// файл создается для чтения и записи

FileStream f=new FileStream("est.txt",

FileMode.Create, FileAccess.ReadWrite );

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

byte[] x=new byte[10];

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

{

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

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

}

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

byte[] y=new byte[20];

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

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

foreach ( byte elem in y ) Console.Write( " " + elem );

Console.WriteLine();

f.Seek(5, SeekOrigin.Begin); //текущий указатель – на 5-ый элемент

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

Console.WriteLine( a );

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

Console.WriteLine( a );

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

Console.ReadKey();

f.Close(); } }}

Результат работы программы: 100 0 1 2 3 4 5 6 7 8 9 10 9 8 7 6 0 0 0 0

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

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

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

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

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

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



<== предыдущая лекция | следующая лекция ==>
 | Элемент Описание


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

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