Стандартные процедуры для работы с файлами.
Описание файлового типа.
Если в программе используется большое число данных, то необходимо оформить их и результаты работы программы в виде файлов. Характерные особенности: 1) у него есть имя; 2) он содержит компоненты одного типа; 3) длина вновь создаваемого файла никак не ограничивается при его объявлении.
Файл можно представить как потенциально бесконечный список значений одного и того же типа. Все элементы файла считаются пронумерованными начиная с нуля. В любой момент времени программе доступен только один элемент файла, на который ссылается текущий указатель (его позиция – текущая позиция). Как правило, все действия с файлом (чтение, запись) производятся поэлементно.
По способу доступа к элементам различают файлы последовательного и прямого доступа. Файлом последовательного доступа называется файл, к элементам которого обеспечивается доступ в такой же последовательности, в какой они записывались. Файлом прямого доступа называется файл, доступ к элементам которого осуществляется по адресу элемента. При организации данных в файл последовательного доступа нельзя одновременно читать и записывать данные в файл (Так как для записи указатель должен быть в конце файла).
Длядоступа к файлу описывается специальная файловая переменная, которая считается представителем файлов в программе.
Турбо-Паскаль поддерживает три типа файлов: текстовые, типизированные и нетипизированные.
Способы объявления файлов различной логической структуры:
· Типизированные файлы задаются предложением file of.
f1: file of integer;
· Текстовые файлы определяются типом text
f2: text;
· Нетипизированные файлы определяются типом file.
f3: file;
Здесь f1,f2,f3 – файловые переменные.
Стандартные процедуры для работы с файлами.
Каждому файлу в языке ставится в соответствие файловая переменная определенного типа, поэтому перед началом работы с файлом необходимо установить данное соответствие. Для этого используется процедура Assign(var F, Name:string), где F – переменная любого строкового типа, а Name содержит полное имя файла (и путь к нему).
Процедура Assign всегда предшествует другим процедурам работы с файлами. Недопустимо использование процедуры Assign для уже открытого файла. (Это значит, что если было назначено имя конкретного набора данных файловой переменной, а затем этот файл был открыт, то, прежде чем использовать туже файловую переменную для нового набора данных, необходимо с помощью процедуры Close закрыть этот файл).
Для работы с файлом прежде всего его необходимо открыть.
Reset(var F:file) – открывает существующий файл;
Rewrite(var F:file) – создает и открывает новый файл. Если файл уже существует, то он удаляется и, на его месте создается новый пустой файл.
Где file – файловая переменная любого типа.
Открытие внешнего файла процедурой Reset в случае его отсутствия может привести к ошибке.
Close(var F) – операция закрытия файла.
Использование процедуры Close позволяет устранить связь файловой переменной с внешним файлом, установленную процедурой Assign.
Rename(var F; NewName: string) – переименовывает неоткрытый файл F любого типа.
Erase(var F) – удаляет неоткрытый внешний файл любого типа, задаваемый переменной F.
Эти процедуры нельзя использовать для уже открытых файлов. Они осуществляются только для реально существующих файлов.
Пример. Создания простого текстового файла.
var
f:text;
Begin
assign(f,’text.txt’);
rewrite(f);
close(f);
End.
Текстовые файлы.
Предназначены для хранения текстовой информации. Текстовый файл трактуется как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Для описания используется стандартный тип Text.
Var F: text;
Каждая строка завершается маркером конца строки (пос-ть двух символов: перевод строки chr(13) и возврат каретки chr(10)).
Для обработки текстовых файлов используются процедуры Read и Write, обеспечивающие соответственно чтение и запись одной строки и более в текстовый файл.
Замечание: Reset открывает текстовый файл только для чтения.
Rewrite открывает текстовый файл только для записи.
Read(<файловая переменная>, <список параметров>) – обеспечивает ввод символов, строк и чисел.
Список параметров – это последовательность из одной или более переменных типа char, String, а также для любого целого или вещественного типа. При вводе переменных типа char выполняется чтение одного символа из файла и присвоение считанного значения переменной. Вызов Read(F, Ww), где Ww – переменная типа word, осуществляет чтение из файла F последовательности цифр, которая затем интерпретируется в число, значение которого и будет присвоено переменной Ww.
Readln(var f: text; v1[,v2,…,vn]) – обеспечивает теже действий, что и read, и дополнительно – чтение до маркера конца строки и переход к новой строке.
Процедура Read обеспечивает ввод данных общим потоком из одной строки, а readln приводит к обязательному переходу к следующей строке текстового файла, т. е. ввод данных осуществляется из различных строк.
Write((<файловая переменная>, <список параметров>) – обеспечивает вывод информации в текстовый файл. Список параметров – это пос-ть из одного и более выражений типа char, string, boolean, а также для любого целого или вещественного типа.
Writeln, обеспечивает запись всех величин с обязательным установлением маркера конца строки в файл.
Пример.
var
f1,f2:text;
c:char;
Begin
assign(f1,'dan1.txt');
assign(f2,'dan2.txt');
Reset(f1); Rewrite(f2);
while not eof(f1) do
begin
while not eoln(f1) do
begin
Read(f1,c);Write(f2,c);
end;
Readln(f1);Writeln(f2);
end;
close(f1); close(f2);
var
f1,f2:text;
c:string;
Begin
assign(f1,'dan1.txt');
assign(f2,'dan2.txt');
Reset(f1);Rewrite(f2);
while not eof(f1) do
begin
Readln(f1,c);Writeln(f2,c);
end;
close(f1); close(f2);
End.
Append(var F: text) – открывает уже существующий файл и позиционирует указатель обработки на конец файла. После такого открытия текстовый файл можно только дополнять информацией, начиная с конца строки.
При организации ввода вывода используются специальные функции:
Eoln(var F: text) – возвращает булевское значение true, если текущая файловая позиция находится на маркере конца строки.
Eof(var F: text) – возвращает булевское значение true, если достигнут конец файла.
SeekEoln(var F: text) – возвращает булевское значение true при достижении маркере конца строки, причем указатель файла пропускает все пробелы и знаки табуляции, предшествующие маркеру.
SeekEof(var F: text) – возвращает булевское значение true указатель файла находится на маркере конца файла. Указатель файла также пропускает все пробелы и знаки табуляции, предшествующие маркеру.
<== предыдущая лекция | | | следующая лекция ==> |
Лекции по паскаль, Записи. | | | Понятие цели воспитания |
Дата добавления: 2016-02-02; просмотров: 829;