В язык Паскаль выделяются данные файлового типа, которые служат для работы с информацией, расположенной на внешних устройствах. Эта информация формируется во внешней памяти компьютера, образуя некоторую область, называемую файлом. Файлы имеют имя и представляют собой совокупность однотипных элементов. Обычно они применяются, в случаях большого объема данных, долгосрочного хранения, либо необходимости предоставления доступа нескольким приложениям к одной и той же информации.
Файлы принято разделять на физические и логические. Физические файлы имеют имя, и располагаются на съемном носителе, а логические это те переменные файлового типа, которые их представляют в программе.
В Паскале различают следующие три вида файлов (в скобках описаны ключевые слова для инициализации файловой переменной):
текстовые файлы (text);
типизированные (file of <тип>);
бестиповые (file).
Немного позже мы разберемся с каждым из них. А сейчас рассмотрим основные операции для работы с файлами.
Создание файла
Assign(<имя файловой переменной>, <имя файла>)
Процедура Assign связывает переменную файлового типа с физическим файлом. Например, установить соответствие между переменной Fil и текстовым файлом lot, расположенном на диске D, можно так:
Assign(Fil, ‘D:\lot.txt’)
Режим чтения
Reset(<имя файловой переменной>)
Процедура Reset открывает файл в режиме чтения, после чего оператором Read(<файловая переменная>, <считываемый элемент>) можно осуществить последовательное считывание элементов в программу.
Конец файла
ЕOF(<имя файловой переменной>)
Количество элементов в файле заранее не определяется, но часто необходимо знать о моменте достижения конца файла. Для этого в Паскале существует логическая функция EOF, которая проверяет достигнут ли конец, и если это так, то принимает значение True, иначе – False. Осуществляется проверка, как правило, в цикле, в качестве условного выражения выступает функция EOF.
Режим записи
Rewrite(<имя файловой переменной>)
Открыв файл в режиме записи, можно поэлементно записать в него информацию, воспользовавшись процедурой Write(<файловая переменная>, <элемент>).
Закрытие файла
Close(<имя файловой переменной>)
Процедура Close закрывает открытый файл, а также освобождает файловую переменную, указанную в качестве параметра.
Удаление файла
Erase(<имя файловой переменной>)
При помощи процедуры Erase, можно удалить с внешнего носителя, заранее закрытый файл.
Изменение имени файла
Rеnаmе(<имя файловой переменной>, ‘<новое имя файла>’)
Rеnаmе переименовывает физический файл, который перед этим следует закрыть процедурой Close.
Смещение указателя файла
Sееk(<имя файловой переменной>, <номер элемента>)
Процедура Sееk устанавливает позицию указателя в файле на необходимый элемент (нумерация элементов начинается с нуля).
Определение положения указателя
FilePos(<имя файловой переменной>)
Функция FilePos принимает значение порядкового номера элемента, над которым в момент вызова находиться указатель.
Определение количества элементов
FileSize(<имя файловой переменной>)
Функция FileSize определяет количество всех имеющихся в файле элементов.
Текстовые файлы
Текстовые файлы могут состоять из элементов символьного (char) и строкового (string) типа данных. Ключевое слово Text указывает, что файловая переменная создается для работы именно с текстовым файлом:
Var <идентификатор>: Text;
Структура текстового файла представляет собой последовательность строк, которые в свою очередь состоят из символов. Любая строка оканчивается признаком «конца строки», а сам файл признаком «конца файла». Для определения конца файла в Паскаль есть функция EOF, а для конца строки – EOLn:
EOLn(<имя файловой переменной>)
В случае достижения конца строки она (функция EOLn) принимает значение True, в противном случае False.
Рассмотрим работу с текстовым файлом, на примере программы.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
program text_fail;
uses crt; var f: text; {объявление файловой переменной} s: string; n, i: integer; begin assign (f, ‘file.txt’); {создание файла} rewrite(f); {открытие файла в режиме записи} write(‘Количество строк ‘); read(n); for i:=1 to n do begin readln(s); {ввод строки} writeln(f, s); {запись строки в файл} end; clrscr; reset(f); {открытие файла в режиме чтения} while not eof(f) do {выполнять пока не достигнут конец файла} begin readln(f, s); {чтение строки из файла} writeln(s); {вывод считанной строки на экран} end; close(f); {закрытие файла} end. |
Место создания файла «file.txt» не было указано, поэтому он создаться в папке по умолчанию для вашей среды программирования.
Для текстовых файлов в Паскале определены следующие процедуры и функции:
Append(<имя файловой переменной>)
Процедура Append открывает существующий файл в режиме дозаписи. После чего в его конец можно добавить какую либо информацию.
SeekEOLn(<имя файловой переменной>)
Если до конца строки остались пробелы/знаки табуляции, то функция SeekEOLn возвращает значение True, иначе False.
SeekEOF(<имя файловой переменной>)
Если до конца файла остались лишь строки с пробелами/знаками табуляции, то функция SeekEOF возвращает значение True, иначе False.