Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_и_Пр_Бизнес_лекции.doc
Скачиваний:
84
Добавлен:
10.05.2015
Размер:
1.21 Mб
Скачать

9.1. Текстовые и двоичные файлы

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

В текстовых файлах данные всех типов хранятся в текстовом формате. Например, число 21 в текстовом файле хранится как два символа: ‘2’ (с кодом 50) и ‘1’ (с кодом 49). Поэтому разные значения данных одного типа в текстовом файле могут занимать разное количество байтов, например, 2 целых числа 1234 и 34567890 занимают в текстовом файле 4 и 8 байтов соответственно. При чтении данных из текстового файла в оперативную память выполняются команды преобразования данных из текстового формата в двоичный формат. При записи данных из оперативной памяти в текстовый файл происходит обратное преобразование. На выполнения этих команд тратится время.

В двоичных файлах данные имеют такой же формат, как формат данных в оперативной памяти. Поэтому для хранения разных значений данных одного типа в двоичном файле требуется одинаковое количество байтов, например, каждое из чисел 1234 и 34567890 занимает в двоичном файле 4 байта. При чтении данных из двоичного файла в оперативную память и при записи данных в файл не требуется преобразование формата данных.

Сравнительнительные характеристики текстовых и двоичных файлов приведены в табл. 5.

Таблица 5

Характеристики текстовых и двоичных файлов

Характеристика файла

Текстовый файл

Двоичный файл

Возможность чтения и записи без программирования

да

нет

Меньший размер

нет

да

Меньшее время чтения и записи

нет

да

Произвольный доступ к данным

нет

да

9.2. Объявление файловых переменных

В С++ файл рассматривается как последовательный поток байтов. При выполнении операций ввода поток байтов файла пересылается от внешнего устройства, например, с дисковода, в оперативную память. При выводе данных из оперативной памяти в файл поток байтов пересылается из оперативной памяти на внешнее устройство. Для работы с файлами в С++ используются классы файловых потоков:

  • ifstream - входной файловый поток для чтения данных из файла;

  • ofstream - выходной файловый поток для вывода данных в файл;

  • fstream двунаправленный файловый поток – для ввода и вывода.

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

Примеры объявления файловых переменных:

ifstream f1;//переменная для чтения файла

ofstream f2;// переменная для вывода в файл

fstream f3; //переменная для чтения и изменения файла

Для связывания файловой переменной с конкретным файлом на компьютере используется функция файловых классов open.

Синтаксис вызова функции open

имя файловой переменной.open(внешнее имя файла

[,режим открытия файла])

Функция имеет два параметра: внешнее имя файла и режим открытия файла. Внешнее имя файла – это полное имя файла. Основные режимы открытия файлов и способы их задания в функции open приведены в табл. 6. Второй параметр необязательный: он устанавливается по умолчанию при объявлении файловой переменной. Значения режима по умолчанию приведены в табл. 7.

Таблица 6

Режимы открытия файла

Режим открытия

Значение режима открытия

Чтение текстового файла

ios::in

Запись в текстовый файл

ios::out

Запись в конец текстового файла

ios::app

Изменение (чтение и запись) текстового файла

ios::in | ios::out

Удаление содержимого текстового файла

ios::trunc

Удаление содержимого текстового файла и запись в файл

ios::trunс | ios::out

Чтение двоичного файла

ios::in | ios::binary

Запись в двоичный файл

ios::out | ios::binary

Запись в конец двоичного файла

ios::app | ios::binary

Изменение (чтение и запись) двоичного файла

ios::in | ios::out | ios::binary

Удаление содержимого двоичного файла

ios::trunc | ios::binary

Удаление содержимого двоичного файла и запись в файл

ios::trunс | ios::out | ios::binary

Таблица 7

Значение режима по умолчанию

Тип файловой переменной

Значение режима открытия файла по умолчанию

ifstream

ios::in

ofstream

ios::trunc | ios::out

fstream

ios::in | ios::out

Примеры объявления и открытия файлов:

ifstream f1; //переменная для чтения из файла

f1.open(“a.txt”); // по умолчанию режим чтения текстового файла

ofstream f2; //переменная для создания и вывода в файл

f2.open(“b.txt”); //по умолчанию режим записи в текстовый файл

fstream f3; //переменная для чтения и изменения файла

f3.open(“c.txt”);//по умолчанию режим изменения текстового //файла

ifstream f4; //переменная для чтения из файла

f4.open(“d.ddd”,ios::binary|ios::in) ;//режим ввода двоичного файла

ofstream f5; //переменная для записи в файл

f5.open(“d.txt”, ios::app); //режим записи в конец текстового файла

fstream f6; //переменная для чтения и изменения файла

f6.open(“f.dat”, ios::binary|ios::in|ios::out); //режим изменения

//двоичного файла

ofstream f7; //переменная для записи в файл

f7.open(“e.ddd”,ios::binary|ios::out); //режим создания двоичного //файла и записи в него данных, по умолчанию существующий //файл усекается до нулевой длины