Информатика и технология программирования


Двоичный файл - неограниченный массив байтов


Существует и другое представление файла в программе, отличное от текстового. В нем файл выступает как аналог внутренней памяти компьютера и организован соответствующим образом. Подобно тому, как в памяти программы размещаются статические переменные в процессе трансляции и динамические - во время работы программы, так и программа может размещать в таком файле любые структуры данных. Файл -образ памяти носит название ДВОИЧНОГО ФАЙЛА ПРОИЗВОЛЬНОГО ДОСТУПА и имеет следующие свойства:



-двоичный файл произвольного доступа представляет собой неограниченный массив байтов внешней памяти;



-форма представления данных в оперативной памяти компьютера (переменные) и в двоичном файле полностью идентичны ;



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



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

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


// Открыть существующий как двоичный для чтения и записи


FILE *fd; fd = fopen("a.dat","rb+wb");
// Создать новый как двоичный для записи и чтения


fd = fopen("a.dat","wb+");

С открытым файлом связано понятие ТЕКУЩЕЙ ПОЗИЦИИ (позиционера). Текущей позицией называется номер байта, начиная с которого производится очередная операция чтения - записи. При открытии файла текущая позиция устанавливается на начало файла, после чтения-записи порции данных перемещается вперед на размерность этих данных.


- Начало -  - Назад -  - Вперед -