Читайте также: |
|
У подобных файлов не указывается тип компонент. Это делает их совместимыми с другими видами файлов.
Файлы без типа удобны для организации доступа к физическим файлам любой структуры, для которых важно лишь одно – величина (размер) компонент. Содержание – вне интереса. Поэтому чаще всего такие файлы применяют для быстрого обмена данными между физическим файлом и оперативной памятью, т.е. для копирования. Причем без использования буферной памяти, которая всегда требуется для файлов с типом. Это существенно повышает скорость, что имеет важное значение при больших объемах данных..
Нетипизированные файлы оперируют т.н. блоками записей. Они имеют номера, что позволяет реализовывать прямой доступ к записям. Стандартная длина блока – 128 байтов. Но ее можно изменить (максимально до 65535 байтов) при открытии файла, задав вторым параметром в RESET или REWRITE. Например:
RESET(…, 512);
Или REWRITE(…, 1024);
При организации быстрого обмена следует учитывать, что:
1. длина записи (компоненты) должна быть кратна размеру физического сектора диска, т.е. 512 байт; но надо помнить, что т.к. последняя запись может быть неполной, то весь файл гарантированно может быть скопирован только при размере записи, равной 1;
2. если учесть, что на деле обменная порция соизмеряется с т.н. кластером - 2-мя и более свободными смежными секторами (в зависимости от типа диска), то длину записи целесообразно приравнивать его длине; это ускорит скорость обмена данными между физическим файлом и оперативной памятью;
3. доступ к любой компоненте нетипизированного файла осуществляется известными стандартными процедурами SEEK, FILESIZE и FILEPOS; но чтение и запись компонент производится не по READ и по WRITE соответственно, а с помощью следующих высокоскоростных процедур:
BLOKREAD (< имя файловой переменной >,< имя буф. перем. >,N[,FZ]);
BLOKWRITE (< имя файловой переменной >,< имя буф. перем. >,N[,FZ]);
где: буф. перем. – буферная переменная в оперативной памяти для
обмена данными с дисками;
N – количество записей, которые читаются или записываются за
одно обращение к диску;
FZ – необязательный параметр, фиксирующий количество фактически прочитанных записей.
После каждого вызова этих процедур текущий указатель смещается на число записей, фактически участвующих в обмене.
За один вызов может быть передано N*RAZM байт, где RAZM – длина записи нетипизированного файла из RESET или REWRITE.
Надо заботится о том, чтобы физическая длина буферной переменной была достаточной для размещения всех N*RAZM байт. Если она меньше, то возникает ошибка ввода-вывода, которую можно предупредить указанием FZ.
Дата добавления: 2015-10-16; просмотров: 47 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Основные операции и стандартные процедуры и функции для работы с текстовыми файлами. | | | Организация конструкторской подготовки производства |