Последовательный доступ к компонентам файла

Доступ к компонентам файла осуществляется либо в режиме записи, либо в режиме чтения.

В режиме записи указатель текущей позиции в файле всегда расположен после последнего компонента файла, и единственно возможной операцией в этом режиме является запись очередного компонента файла, в результате чего файл «расширяется».

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

Основные операции над файлами с последовательным доступом к их компонентам таковы.

Открытие файла. Операция открытия получает в качестве параметров имя файла и режим доступа (чтение или запись).

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

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

Чтение. Операция чтения передает содержимое текущего компонента (определяемого указателем текущей позиции файла) в переменную программы.

Запись. Операция записи создает новый компонент в текущей позиции файла и передает значение программной переменной этому новому компоненту.

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

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

Схема формирования файла:

Var

F: file of T;

a: T;

Begin

AssignFile(F, <путь к файлу и его имя>);

Rewrite(F); { Открытие файла для записи – создание пустого файла }

<цикл формирования файла>

Begin

<получить значение а>;

write(F, a); { записать а в конец файла }

end;

CloseFile(F); { закрыть файл }

End.

Схема просмотра (использования файла):

var

F: file of T;

a: T;

Begin

AssignFile(F, <путь к файлу и его имя>);

Reset(F); { Открытие файла для чтения, Файл уже существует }

while not Eof(F) do begin { пока не конец файла выполнять}

read(F, a); { прочитать данные из файла в переменную а }

<использовать а >;

end;

CloseFile(F); { закрыть файл }

End.