Работа с файлами в Pascal

advertisement
Работа с файлами в Pascal
Файл – это упорядоченная последовательность однотипных компонентов,
расположенных на внешнем носителе. Файлы предназначены только для хранения
информации, а обработка этой информации осуществляется программами.
Использование файлов целесообразно в случае:

долговременного хранения данных ;

доступа различных программ к одним и тем же данным;

обработки больших массивов данных, которые невозможно целиком
разместить в оперативной памяти компьютера.
В Паскале определены текстовые файлы, типизированные и нетипизированные.
Файл, не содержащий ни одного элемента, называется пустым. Создается файл путем
добавления новых записей в конец первоначально пустого файла. Длина файла, т.е.
количество элементов, не задается при определении файла. Все файлы должны быть
описаны в программе либо в разделе переменных VAR (либо в разделе типов TYPE).
Под чтением файла понимают ввод данных из внешнего файла, находящегося на
диске, в оперативную память машины. Запись в файл – вывод результатов работы
программы из оперативной памяти на диск в файл.
Работа с файлами выполняется следующими процедурами:
Assign – устанавливает связь между переменной и физическим именем файла,
принятым в ОС.
Reset – открывает существующий файл для чтения.
Rewrite – создает и открывает новый файл для записи на внешнем устройстве
(если файл ранее существовал, вся предыдущая информация из него стирается).
Close – закрывает открытый файл.
Для определения конца файла используется стандартная встроенная функция EOF
(файловая переменная), которая принимает значение True, если достигнут конец файла, и
значение False в противном случае.
В зависимости от способа объявления можно выделить три вида файлов Паскаля:
 типизированные файлы Паскаля (задаются предложением file of..);
 текстовые файлы Паскаля (определяются типом text);
 нетипизированные файлы Паскаля (определяются типом file).
Текстовые файлы
Текстовые файлы – файлы на диске, состоящие из символов. Для разделения
строк используются символы «конец строки». Текстовые файлы являются файлами с
последовательным доступом. В любой момент времени доступна только одна запись
файла. Другие записи становятся доступными лишь в результате последовательного
продвижения по файлу. Текстовые файлы внутренне разделены на строки, длины которых
различны. Для разделения строк используется специальный маркер конца строки.
Объявляются текстовые файлы переменной типа text. Обрабатывать их можно только
последовательно.
Основные процедуры и функции для работы с файлами
1. До начала работы с файлами в Паскале необходимо установить связь между
файловой переменной и именем физического дискового файла:
Assign(<файловая_переменная>, <имя_дискового_файла>)
Следует помнить, что имя дискового файла при необходимости должно
содержать путь доступа к этому файлу, включая имя дисковода. При этом имя дискового
файла – строковая величина, т.е. должна быть заключена в апострофы. Например:
Пример процедуры Assign в Паскале
Assign (chf, 'G:\Home\ Student\ Lang\ Pascal\ primer.dat');
Не разрешается связывать с одним физическим файлом более одной файловой
переменной.
2. После окончания работы с файлами на Паскале, они должны быть закрыты.
Close(<список файловых переменных>);
3. Подготовка к записи в файл Паскаля
Rewrite(<имя_ф_переменной>);
Процедура Rewrite(f) (где f – имя файловой переменной) устанавливает файл с
именем f в начальное состояние режима записи, в результате чего указатель
устанавливается на первую позицию файла. Если ранее в этот файл были записаны какиелибо элементы, то они становятся недоступными.
4. Запись в файл Паскаля
Write(<имя_ф_переменной>, <список записи>);
WriteLn(<имя_ф_переменной>, <список записи>);
При выполнении процедуры write(f, x) в ту позицию, на которую показывает
указатель, записывается очередная компонента, после чего указатель смещается на
следующую позицию. Естественно, тип выражения х должен совпадать с типом
компонент файла.
5. Подготовка файла к чтению Паскаля
Reset(<имя_ф_переменной>);
Эта процедура ищет на диске уже существующий файл и переводит его в режим
чтения, устанавливая указатель на первую позицию файла. Если происходит попытка
открыть для чтения не существующий еще на диске файл, то возникает ошибка
ввода/вывода, и выполнение программы будет прервано.
6. Чтение из файла в Паскале
Read(<имя_ф_переменной>,<список переменных>);
7. Функция определения достижения конца файла в Паскале
Eof(<имя_ф_переменной>);
Название этой функции является сложносокращенным словом от end of file.
Значение этой функции имеет значение true, если конец файла уже достигнут, т.е.
указатель стоит на позиции, следующей за последней компонентой файла. В противном
случае значение функции – false.
Download