Стандартные процедуры для работы с файлами.

Описание файлового типа.

Если в программе используется большое число данных, то необходимо оформить их и результаты работы программы в виде файлов. Характерные особенности: 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; просмотров: 822;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.013 сек.