Файловый тип. Файлы. Требования к имени. Связывание. Текстовые файлы. Ввод (вывод) информации из файла (в файл, устройство) Типизированные файлы и нетипизированные файлы

Общие процедуры для работы с файлами

_____________________________________________________________

|Assign(Var f,FileName:String) - Cвязывание ф.п.f с файлом FileName

|RESET(Var f) | Открытие файла с логическим именем f для чтения |

|REWRITE(Var f) Открытие файла с лог. именем f для записи       |

| CLOSE(f) | Закрытие файла с лог. именем f                                |

|Erase(Var f) | Удаление файла (стирание) с диска                           |

|Rename(f, NewName:String)|Переименовывает физический файл   |

| EOF(f) | Функция тестирования конца файла         |

|FLUSH()| Очищает внутренний буфер файла           |

-------------------------------------------------------------

ТЕКСТОВЫЕ ФАЙЛЫ

Это файлы последовательного доступа.

Они предназначены для хранения текстовой информации. Компоненты (запи-

си) текстового файла могут иметь переменную длину.

Для доступа к записям файла применяются процедуры

READ, READLN, WRITE, WRITELN.

Текст-ориентированные процедуры и функции

____________________________________________________________

| процедуры |         пояснения                  |

| и функции |         (действия)                 |

|-------------|----------------------------------------------|

|Append      |Процедура открывает уже существующий файл f|

| () |для дозаписи в конец файла                     |

|пр:Append(f) |      (для его расширения)          |

 

|SeekEOLN |Функция пропускает все пробелы и знаки табуля-|

| () |ции до первого признака EOLN или первого зна-|

| логич.типа |чащего символа. Возвращает значение TRUE, если|

пр:SeekEOLN(f)|обнаружен маркер конца файла или маркер конца |

|        |строки.     Если ф.п. опущена,      |

|        |функция проверяет стандартный файл INPUT. |

|        |                                         |

|SeekEOF |Функция пропускает все пробелы,знаки табуляции|

| () |и маркеры конца строк до маркера конца файла|

|пр:SeekEOF(f)|или первого значащего символа. Если маркер об-|

|        |наружен, возвращает значение TRUE.       |

 

|EOLN ()|Функция возвращает значение TRUE,если во вход-|

| логич.типа | ном файле f достигнут маркер  EOLN или |

|пр: EOLN(f) | EOF; FALSE - в противном случае.        |

|_____________|______________________________________________|

 

Типизированные файлы

позволяют организовать прямой доступ к каждой из компонент (по его по-

рядковому номеру). Описание файловой переменной

Var ft: file of;

Перед первым обращением к процедурам ввода-вывода указатель файла

стоит в его начале и указывает на 1-ю компоненту с номером 0. После

каждого чтения или записи указатель сдвигается с следующему компоненту

файла. Переменные в списках в/в должны иметь тот же тип, что и компо-

ненты файла.

Процедуры и функции для работы с типизированными файлами

____________________________________________________________

| процедуры |         пояснения                  |

| и функции |         (действия)                 |

|-------------|----------------------------------------------|

READ(,); Процедура

Обеспечивает чтение очередных компонентов файла

WRITE(,) используется для записи новых

компонент в файл; в качестве элементов вывода

м.б. выражение.

SEEK(,) - смещает указатель

файла к компоненту с;

 - выражение типа LONGINT.

(К текстовым файла применять нельзя.)

FILESIZE) Функция возвращает количество компонент,

содержащихся в файле.(Типа LongInt)

Функция FILEPOS() возвращает порядковый номер компо-

ненты файла, доступной для чтения или записи

(который будет обрабатываться следующей операцией в/в).

(   Процедура CLOSE () - закрытие файла.)

|-------------|----------------------------------------------|

 

 - содержит одну или более переменных такого

же типа, что и компоненты файла,

 - файловая переменная д.б. объявлена предложением FILE OF

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

процедурой RESET для чтения.

Если файл исчерпан, обращение к READ вызовет ошибку В/В

Чтобы переместить указатель в конец файла можно написать

Пр. Seek(f,FileSize(f)); где f - файловая переменная

 

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

Обьявляются без указания типа файла:

TYPE ftype=file;     или          VAR fn: file;

Для данных файлов не указывается тип компонентов, что делает их сов-

местимыми с любыми другими файлами. Позволяет организовать высокоско-

ростной обмен данными между диском и памятью.

При инициализации нетипизированных файлов процедурами RESET и

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

пример: VAR f:file;...

ASSIGN (f,'a.dat');

RESET (f,512);

\ длина записи

Длина файла может быть представлена выражением типа WORD; если пара-

метр длины опущен, подразумевается длина 128 байт; максимальная длина

65535 байт.

Для обеспечения максимальной скорости обмена данными следует за-

давать длину, кратную длине физического сектора дискового носителя

(512 байт). Кроме того, фактически пространство на диске выделяется

любому файлу порциями - кластерами, которые в зависимости от типа дис-

ка могут занимать 2 и более смежных секторов. Как правило, кластер

м.б. прочитан или записан за один оборот диска, поэтому наивысшую ско-

рость обмена данными можно получить, если указать длину записи, равную

длине кластера.

При работе с нетипизированными файлами Могут применяться все

рассмотренные процедуры и функции, доступные типизированным файлам, за

исключением READ и WRITE, которые для чтения и записи заменяются соот-

ветственно высокоскоростными процедурами BlockREAD и BlockWRITE.

BlockREAD(,,,[,Var])

BlockWRITE(,,,[,Var])

где - имя переменной, которая будет участвовать в обмене дан-

ными с дисками;

 - количество записей, которые д.б. прочитаны или записаны за одно

обращение к диску;

 - необязательный параметр, содержащий при выходе из процедуры ко-

личество фактически обработанных записей.

За одно обращение к процедурам м.б. передано N*r байт, где r -

длина записи нетипизированного файла. Передача идет, начиная с 1-го

байта переменной.

После завершения процедуры указатель смещается на записей.

Процедурами SEEK, FilePos и FileSize можно обеспечить доступ к любой

записи нетипизированного файла.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



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