9 Июнь 2008

12. Бинарные и текстовые файлы

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

Как и файл с произвольным доступом все бинарные файлы соответствующие им указатели. Однако в бинарном файле указатель указывает байтовую позицию.

При первом открытии файла указатель находится в позиции 1. После любой операции чтения или записи указатель помещается сразу или после прочитанных или записанных данных. Значение файлового указателя можно определить или изменить с помощью оператора Seek и Loc. Можно использовать функцию Eof для определения достижения конца файла.

Для записи данных в бинарный файл используется оператор Put, для чтения оператор get.

Put # fn, pos, var

Get # fn, pos, var

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

Var-объявляем переменную.

Эти операторы автоматически читают и записывают количество байтов, содержащихся в переменной. Если Var – сторона переменной длины, то количество переданных байтов равно количеству символов.

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

Некоторые важные аспекты при работе с бинарными файлами:

  1. чтобы добавить новые данные в конец существующего бинарного файла выполняется оператор Seek # fn, Lot (fn)+1 для перемещения указателя в конец файла. Если записать данные в существующий бинарный файл в позицию перед концом файла новые данные будут записаны поверх существующего.
  2. При записи данных в позицию указателей находящегося за пределами файла они будут расширены до новой длины. Однако часть файла между первоначальным концом файла и новыми данными снижает (снимает) неопределенные значения.
  3. При чтении данных в позицию указателя выход за рамки файла не выдается сообщение об ошибке, но полученные в результате данные будут бессмысленными.

© Проект «Студенты-Программеры»., 2008. Все права защищены.
Перепечатка материалов только при наличии активной ссылки на источник.
Powered by WordPress