Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Нетипизированные файлы.

Читайте также:
  1. Файлы с плотным индексом, или индексно-прямые файлы.

 

У подобных файлов не указывается тип компонент. Это делает их совместимыми с другими видами файлов.

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

Нетипизированные файлы оперируют т.н. блоками записей. Они имеют номера, что позволяет реализовывать прямой доступ к записям. Стандартная длина блока – 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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Основные операции и стандартные процедуры и функции для работы с текстовыми файлами.| Организация конструкторской подготовки производства

mybiblioteka.su - 2015-2024 год. (0.007 сек.)