double arrow

Добавление записей к файлу (в конец файла)


Файл может расширяться путем добавления в файл новых компонентов, например, за последним существующим компонентом файла.

Первый вариант добавления

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

2. После закрытия обоих файлов возможны три варианта

а) содержимое нового файла просто переписывается в старый файл, новый файл уничтожается

б) переименование: новый файл получает имя старого файла, а старый файл уничтожается;

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

Второй вариант добавления записей к файлу (с использованием элементов прямого доступа).

Назначение процедуры SEEK( … ), FILESIZE(…);

Файл открывается для чтения (RESET). Далее необходимо обеспечить дописывание новых записей в файл вслед за последней записью. Для этого сначала используется процедура позиционирования указателя на позицию за последней записью файла :

SEEK (FILE_PROG, FILESIZE(FILE_PROG));

или так:

N := FILESIZE(FILE_PROG);

SEEK (FILE_PROG , N);

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

Далее файл должен быть закрыт..

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

Вариант 1.

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

. . .

{ фрагмент программы }

reset (f1);

reset (f2);

rewrite (F_rez);

read (f1, zap1);

read (f2, zap2);


Сейчас читают про: