Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции информатика.doc
Скачиваний:
59
Добавлен:
11.04.2015
Размер:
2.47 Mб
Скачать

9.2 Процедуры и функции для работы с файлами

assign (<файловая переменная>, <имя.расширение>); - устанавливает связь между файловой переменной и именем файла на диске. Имя файла состоит из двух частей: имя (не более 8 символов) и расширение (не более 3 символов). Расширение может отсутствовать.

Например, assign(f1,’res.txt’);

Далее в программе, где будет упоминаться переменная f1 - подразумевается, что работа ведется с реальным файлом res.txt .

reset (<файловая переменная >); - открывает существующий файл для чтения.

Например, reset(f1);

rewrite (<файловая переменная >); - открывает файл для записи. Если файла нет на диске, то он создается. Если есть такой файл, то он создается заново пустым, вся старая информация стирается.

Например, rewrite(f1);

append (<файловая переменная >); - открывает файл для добавления в него новой информации (старая не стирается). Только для текстовых файлов (!).

Например, append(f1);

read (<файловая переменная >, <переменная>); - чтение одного элемента из файла, соответствующего файловой переменной, и помещение его в переменную программы. Чтение осуществляется последовательно, после чтения каждого значения, указатель в файле перемещается на следующую позицию.

Пример: Пусть на диске есть символьный файл mebel. Задача: написать программу, которая последовательно считывает из этого файла первые 4 символа и выводит их на экран.

Изобразим файл следующим образом:

1-ый байт памяти

2-ой байт памяти

Mebel

с

т

о

л

Программа:

var F1: file of char;

x: char; i:integer;

Begin

assign(F1,’mebel’);

reset(F1);

for i:=1 to 4 do

begin

read(F1,x);

write(x);

end;

close(F1);

End.

На экране увидим:

стол

Для текстового файла может использоваться процедура readln, которая читает значение из файла и пропускает непрочитанную часть строки и признак конца строки.

write (<файловая переменная >, <переменная>); - запись в файл данных из переменных программы. Вывод информации осуществляется последовательно.

var f1: file of char;

y: array [1..100] of integer;

for i:=1 to 100 do write(f1,y[i]);

eof (var f): boolean; - функция проверки конца файла. Возвращает true, если достигнут конец файла, иначе возвращает false.

while not eof(f) do read(f,x);

{команда читается так: пока не конец файла делай команду: чтение очередного элемента из файла, соответствующего файловой переменной f, в переменную x}

close (<файловая переменная >); - процедура закрытия файла, завершает действия с файлом. После процедуры close файловую переменную можно связать с другим файлом или снова открыть этот же файл.

assign(f2,’MyFile.txt’);

rewrite (f2);

close(f2);

reset(f2);

close(f2);

assign(f2,’OtherFile.txt’);

reset(f2);

Пример 1: Программа, переписывающая из файла a.txt в файл b.txt все символы, кроме цифр.

var ch: char:

f1,f2: text:

begin

assign(f1, ‘a.txt’);

assign(f2, ‘b.txt’);

reset(f1);

rewrite(f2);

repeat

read(f1,ch);

if (ch<=’0’) or (ch>=’9’) then write(f2,ch);

until eof(f1);

close(f1); close(f2);

end.

Пример 2: Программа для вычисления и вывода в файл таблицы Пифагора (таблицы умножения).

Var i, j, n : Integer;

f : Text;

Begin

Assign(f, ‘tab_pif.txt’);

Rewrite(f);

For i := 1 to 9 do begin

For j := 1 to 9 do begin

n := i*j;

Write(n:4); {вывод результата на экран}

Write(f, n:4); {вывод результата в файл; т.е., если в процедуре Write первым параметром

указана файловая переменная, то вывод осуществляется не на экран, а в файл,

с которым связана эта переменная в процедуре Assign }

end;

WriteLn; {перевод строки на экране}

WriteLn(f); {перевод строки в файле}

end;

Close(f);

End.

rename(<файловая переменная>,<новое имя файла>); - переименование файла на диске. Перед использованием этой поцедуры необходимо связать файловую переменную со старым именем файла. Если файл был открыт, то необходимо его закрыть.

Пример:

var f1,f2: text;

i: integer;

begin

assign(f1, ‘res.txt’);

rename(f1, ‘res.old’);

assign(f2, ‘res.old’);

rewrite(f2);

for i:=1 to 20 do writeln(f2,i);

close(f2);

end.

erase (<файловая переменная>); - удаление файла с диска. Если файл был открыт, то закрыть, связать с файловой переменной.

assign(f,’res.old’);

erase(f);

seek (<файловая переменная>, N); - перемещение в заданную позицию файла, нумерация позиций с нуля, N – номер позиции. Не используется для текстовых файлов (!).

0

a.dat

1 2 3 4 5

2

5

3

8

8

6

Пример:

var f: file of integer;

i: integer;

begin

assign(f,’a.dat’);

reset(f); N=0

read(f,i); i=2

seek(f,4); N=4

read(f,i); i=8

end.

filesize(<файловая переменная>): longint; - функция, возвращает текущий размер файла (количество компонентов!).

Пример 3: Программа, меняющая порядок символов в файле на обратный.

var f1.f2: file of char;

i,n: integer;

ch: char;

begin

assign(f1,’a.txt’);

assign(f2,’b.txt’);

reset(f1);

rewrite(f2);

h:=filesize(f1);

for i:=h-1 downto 0 do

begin

seek(f1,i);

read(f1,ch);

write(f2,ch);

end;

close(f1);

close(f2);

end.