- •Алгоритмические языки и программирование работа с файлами
- •Брянск 2007
- •1. Цель работы
- •2. Теоретическая часть
- •2.1. Типизированные файлы
- •2.1.1. Объявление файловой переменной
- •2.1.2. Связывание файловой переменной
- •2.1.3. Открытие файла
- •2.1.4. Операции ввода/вывода
- •2.1.5. Дополнительные операции (применяемые только
- •2.1.6. Закрытие файла
- •2.2. Текстовые файлы
- •2.3. Нетипизированные файлы
- •2.4. Дополнительные подпрограммы для работы с файлами
- •2.4.1. Переименование и удаление
- •2.4.2. Обработка ошибок ввода/вывода
- •2.4.3. Операции с каталогами
- •2.4.4. Дополнительные операции
- •2.5. Примеры
- •2.5.1. Работа с типизированными файлами
- •2.5.2. Работа с текстовыми файлами
- •2.5.3. Работа с нетипизированными файлами
- •3. Порядок выполнения работы
- •4. Список заданий
- •4.1. Работа с типизированными файлами
- •4.2. Работа с текстовыми файлами
- •5. Контрольные вопросы
- •6. Список рекомендуемой литературы
2.1.6. Закрытие файла
После завершения работы с файлом его обязательно надо закрыть с помощью процедуры:
Close(имя_файловой_переменной);
которая в файл, открытый для вывода, помещает специальную запись – маркер «конец файла».
Закрытие не отменяет связи логического файла с физическим (Assign). Попытка закрыть ещё неоткрытый или уже закрытый файл приведёт к прерыванию выполнения программы. Закрытие файлов гарантирует сохранность записываемой в них информации. Это связано с буферизацией операций ввода-вывода (рис. 1). Буфер – это участок оперативной памяти, закреплённый за открытым файлом и предназначенный для обмена информацией между программой (логическим файлом) и внешней памятью (физическим файлом). При выводе информации записи помещаются в буфер и лишь после его заполнения выводятся на внешний носитель. Закрытие файла (Close) вызывает принудительную очистку буфера ввода-вывода.
Пример:
Close(FI); {Закрыть файл FI}
Рис. 1. Буферизация операций ввода вывода
2.2. Текстовые файлы
Текстовые файлы представляют собой последовательность строк, а строки – последовательность символов.
Для описания текстовых файлов в языке Pascal определен стандартный тип Тext:
Var TF1, TF2: Text; {Объявление файловых переменных}
Для работы с текстовыми файлами используются те же подпрограммы, что и применяемые для работы с типизированными файлами (см. п.п. 2.1.2 – 2.1.4, 2.1.6).
Кроме перечисленных процедур и функций, также могут быть использованы следующие:
ReadLn(имя_файловой_переменной, имя_переменной);
Процедура ReadLn читает в переменную текущую строку файла, но после выполнения этого действия процедура автоматически перемещает указатель на начало следующей строки в файле.
WriteLn(имя_файловой_переменной, имя_переменной);
Процедура WriteLn выводит содержимое переменной в текущую строку файла и в конце добавляет символ конца строки, при этом указатель в файле переходит к началу следующей строки.
ReadLn(имя_файловой_переменной); – пропускает строку до начала следующей;
WriteLn(имя_файловой_переменной); – завершает строку файла, в которую производится запись, признаком конца строки и переходит к началу следующей.
Строки текстового файла имеют переменную длину, каждая строка завершается признаком конца строки. С признаком конца строки связана функция EOLn(имя_файловой_переменной). Эта функция возвращает значение true, если достигнут конец строки, и значение false, если конец строки не достигнут. Данная функция применяется, если файл читается посимвольно и необходимо проверить достижение конца строки.
Процедура Append(имя_файловой_переменной) служит для специального открытия текстовых файлов. Она применима к уже существующим физическим файлам и открывает их для добавления информации в конец файла.
В языке Pascal понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.
Здесь есть возможность связать файловую переменную не только с физическим файлом на носителе информации, но и с устройством. В качестве такового используются псевдонимы устройств:
CON – консоль (экран-клавиатура), то есть при записи в это устройство будет выводиться информация на экран, при чтении информации из этого устройства будет выполняться ввод данных с клавиатуры.
PRN – принтер. При записи в это устройство информация будет выведена на принтер.