Стандартные файловые переменные Input и Output. Назначение, открытие и закрытие файлов
Работа с файлом включает:
- инициализацию файловой переменной - установление связи файловой переменной с файлом;
- открытие файла - подготовку файла для выполнения операций ввода/вывода;
- обработку компонентов файла - выполнение операций ввода-вывода;
- закрытие файла (при повторном открытии файл закрывается автоматически).
Инициализация файловой переменной. Связь между физическим устройством (дисководом или внешним устройством) и файловой переменной устанавливается специальной процедурой.
Процедура Assign (Var f; st:string)инициализирует файловую переменную f, связывая ее с файлом или логическим устройством, определенным строкой st.
Если файл находится в текущем каталоге, то достаточно указать имя файла и его расширение. В противном случае необходимо указать полное имя файла, например:
Type FI1 = file of integer;
Var f1,f2,f3: FIl;
…
Assign (f1, 'F1.dat'); {связывание файловой переменной с файлом в текущем каталоге}
Assign (f2, 'd:\iva\a.dat'); {связывание файловой переменной с файлом в указанном каталоге}
Assign(f3, 'CON'); {связывание файловой переменной с консолью}
Открытие файла. Открытие файла предполагает указание направления передачи данных. В Borland Pascal файл можно открыть для чтения и для записи. Тестовый файл можно открыть также для добавления строк. В типизированный файл, открытый для чтения, можно дописывать новые записи иди писать в нем новые записи на место старых.
1. Процедура ReSet(Var f)- открывает файл, определенный файловой переменной f для чтения. При выполнении этой процедуры указатель файла устанавливаеся на первый компонент файла (физически первый блок записей считывается в буфер). Логическое устройство в этом случае готовится к выполнению операций ввода.
При открытии для чтения несуществующего файла регистрируется ошибка выполнения, а функция IOResult типа Word возвращает значение, отличное от 0. Отключив контроль операций ввода-вывода и используя функцию IOResult можно организовать проверку наличия файла с указанным именем на диске:
Var f:file of char;
Begin
Assign(f, 'a.dat' ); {инициализация файловой переменной}
{$ I-} {отмена контроля ошибок ввода –вывода}
ReSet (f); {открытие файла для чтения}
{$ I+} {включение контроля ошибок}
If IOResuLt <>0 then WriteLn ('Файл не существует')
else WrileLn('Фauл существует');...
2. Процедура ReWrite(Var f)открывает файл, определенный файловой переменной f, для записи. При открытии для записи существующего файла старый файл уничтожается без предварительной проверки и выдачи предупреждения пользователю. Если файла с таким именем не существовал, то он создается и подготавливается к записи (физически очищается буфер). Логическое устройство при этом подготавливается к приему информации.
3. Процедура AppEnd(Var f:text)- открывает текстовый файл, определенный файловой переменной f, для добавления строк.
При открытии для добавления строк указатель файла устанавливается на конец файла, и, соответственно, все строки, выводимые вфайл, дописываются к уже существующему файлу.
Любой программе без объявления, инициализации файловой переменной и открытия доступны два файла со стандартными файловыми переменными:
§ INPUT - чтение со стандартного устройства ввода;
§ OUTPUT - вывод на стандартное устройство вывода.
Это текстовые файлы, используемые для выполнения элементарных операций ввода-вывода. В операторах ввода-вывода файловые переменные этих файлов обычно не указывают. Остальные файлы становятся доступными только после связывания файловой переменной с файлом или логическим устройством и открытия файла.
Стандартным устройством ввода MS DOS по умолчанию является клавиатура. Стандартным устройством вывода - экран дисплея.
Примечание. Мри необходимости эти устройства можно переназначить средствами операционной системы. Так, для организации ввода данных из файла вместо ввода с клавиатуры необходимо запустить программу из командной строки MS DOS, указав после имени программы символ «<» и имя файла, а для организации вывода в файл вместо вывода на экран - символ «>» и имя файла. Можно перенаправить только ввод или только вывод или и то и другое сразу.
Например:
A:\>example.exe <a.dat >a.res - ввод из файла a.daе, а вывод в файл а.rez.
Такое переназначение будет выполнено, если к программе не используется модуль crt, который организует операции ввода-вывода напрямую, непосредственно взаимодействуя с устройством.
Обработка компонентов файла. Основные операции над компонентами - это операции записи и чтения. На базе этих операций выполняют более сложные операции:
- создание файла - занесение в файл требуемых записей:
- модификация файла- изменение всех или нескольких записей, добавление и удаление записей;
- поиск нужной информации в файле.
Выполнение -этих операций осуществляется по-своему для каждого типа файла.
Закрытие файла. Закрытие файла, открытого для записи или чтения, осуществляется процедурой
Close(Var f).
При этом вновь созданный файл регистрируется в каталоге. Так как любое обращение к диску осуществляется через буферную память, часть данных, выводимых в файл, может остаться в буфере. Процедура закрытия файла обеспечивает вывод оставшихся компонентов из буфера в файл. Связь файловой переменной с файлом при закрытии сохраняется, и при повторном использовании этого же файла процедуру Assign применять еще раз не требуется.
Дата добавления: 2015-12-01; просмотров: 1135;