Cредства обработки файлов

Реализованная в Pascal поддержка файловой системы наиболее полно использует возможности операционной системы по передаче данных. Каждому файлу в языке ставится в соответствие файловая переменная определенного типа, поэтому перед началом работы с файлом необходимо установить данное соответствие. Для этого в языке используется процедура Assign (var F; Name: string); где F — переменная любого файлового типа, а строковое выражение Name содержит полное имя файла, отвечающее требованиям операционной системы.
Процедура Assign всегда предшествует другим процедурам работы с файлами, так как ставит и соответствие конкретному файлу на внешнем носителе логическую файловую переменную языка, к которой впоследствии будут обращаться все другие файловые процедуры.
Недопустимо использование процедуры Assign для уже открытого файла. Это значит, что если файловой переменном с помощью процедуры Assign было назначено имя конкретного набора данных, а затем этот файл был открыт, то прежде чем использовать ту же файловую переменную для нового набора данных, необходимо с помощью процедуры Close закрыть этот файл.

Для работы c файлом, прежде всего, необходимо его открыть. В Pascal для этого предусмотрены две процедуры:

Reset(var F : file ); F — открывает существующий файл;

Rewrite(var F : file ); F — создает и открывает новый файл.

При описании обеих процедур параметр File ибозначает файловую переменную любого типа. Открытие внешнего файла с помощью процедуры Reset в случае его отсутствия на диске может привести к Ошибке при выполнении программы. Подобные ошибочные ситуации в операциях ввода-1-ывода позволяет отслеживать специальная функция IOresult. Пример: Стандартное открытие файла.

Assign(F, ‘’);
Reset(F);

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

Имеются некоторые различия в использовании процедуры Reset при открытии различных типов файлов. В отношении текстовых файлов (тип Text) действие процедуры означает открытие файла только для чтения. Для нетипизированных файлов в описание процедуры добавляется еще один параметр RecSize типа word, который устанавливает длину записи для функций обмена с файлом. Процедура Reset для нетипиапрованного файла имеет вид:

Reset(tvar F: file; RecSize: word);

Процедура Rewrite создает и открывает новый файл. Использование этой процедуры требует особого внимания. При попытке создать и открыть файл с именем уже существующего на диске набора данных действие процедуры Rewrite сведется к удалению этого набора и созданию нового пустого файла с тем же именем.

При открытии новых нетипизированных файлов для задания длины записи в описании процедуры Rewrite добавляется дополнительный параметр RecSize типа word. В этом случае процедура имеет вид:

Rewrite(var F: file; RecSize: word);

Если процедура Rewrite используется для текстового файла, то к открываемому новому набору данных в дальнейшем могут быть применены только операции записи.

Операция закрытия файла является логическим окончанием работы с любым открытым файлом. Для этого служит процедура

Close(var F);

Использование процедуры Close позволяет устранить связь файловой переменной с внешним файлом, установленную с помощью процедуры Assign.

Пример: Полная цепочка команд для создания простого текстового файла с именем WORK.TXT:

Var F: text;
Begin
Assign(F, ‘WORK.TXT’);
Rewrite(F);
Write(F, ‘Простой текстовый файл’);
Close(F);
End.

К языковым средствам обслуживания файлов необходимо отнести процедуры переименования и удаления неоткрытых файлов. Использование этих процедур не зависит от типа файла.

Rename(var F; NewName : string);

Процедура переименовывает открытый файл F любого типа. Новое имя задается строкой NewName.

Erase(var F);

Процедура удаляет неоткрытый внешний файл любого типа, задаваемый переменной F.

Добавить комментарий