Файлы

advertisement
1
Файлы
Общие сведения. Последовательный и прямой доступ к файлам.
Текстовые файлы.
Файлом называется совокупность данных, записанная во внешней памяти
под определенным именем.
Целесообразно применять файлы в следующих случаях:
1. ввод больших объемов данных удобнее осуществлять с
использованием файла данных, который может быть использован
неоднократно;
2. файл данных может быть подготовлен другой программой.
Любой файл имеет следующие характерные особенности:
1. у файла есть имя;
2. файл содержит компоненты одного типа. Таким типом может быть
любой тип языка, кроме файлового. (Например, существует файл
записей или файл строк, но файл файлов создать нельзя);
3. длина вновь создаваемого файла никак не обговаривается при его
объявлении и ограничивается только емкостью устройства внешней
памяти.
Файл представляет собой некоторую абстрактную ленту, у которой
фиксировано начало и не фиксирован конец. Все элементы файла считаются
пронумерованными, начальный элемент имеет нулевой номер.
0
F
1 2 3
F1 F2 F3 F4 …
текущий указатель
F – имя файла
F1, F2, F3, F4, … - элементы файла
Элементы файла записываются на эту ленту последовательно, друг за
другом. Каждый новый элемент может быть дописан только в конец фйла за уже
имеющимися элементами.
В любой момент времени программе доступен только один элемент файла,
на который ссылается текущий указатель. Часто позицию размещения
доступного элемента называют текущей позицией.
Понятие физического и логического файла.
У понятия файл есть две стороны.
С одной стороны, файл – это именованная область внешней памяти,
содержащая какую-либо информацию. Файл в таком понимании называют
2
физическим файлом, то есть существующим физически на некотором
материальном носителе информации.
С другой стороны, файл – это одна из многих структур данных
используемых в программировании. Файл в таком понимании называют
логическим файлом, то есть существующим только в нашем логическом
представлении при написании программы. В программах логические файлы
представляются файловыми переменными определенного типа.
Для доступа к файлу описывается специальная файловая переменная,
которая считается представителем файлов в Паскаль-программе (чаще всего ее
обозначают как F). Если файл состоит из записей, дополнительно описывается
переменная для доступа к полям записи (обозначим ее R)
Синтаксис:
type
<имя типа> = <тип компонентов>;
var
<F>: file of <имя типа>;
<R>: <имя типа>;
Переменные файлового типа могут быть описаны в программе либо явно в
разделе переменных var, либо с использованием раздела типов type.
Объявление файлов в разделе переменных имеет вид:
1. текстовый фйл
var A: text;
2. типизированный файл
var <имя файла>: file of <базовый тип элементов>;
3. файл без типа
var A: file;
Файлы последовательного и прямого доступа.
Файлы в Turbo Pascal классифицируются по двум признакам:
 по типу (логической структуре);
 по методу доступа к элементам.
3
Файлы
По типу
По методу
доступа
типизированные
Последовательного
доступа
текстовые
Прямого
доступа
нетипизированные
Допустимость применения методов доступа к каждой разновидности файлов по
типу покажем на схеме:
Текстовые
F: text;
Последовательного
доступа
Типизированные
F: file of <тип>;
Прямого
доступа
Нетипизированные
F: file;
Файлом последовательного доступа называется файл, к элементам которого
обеспечивается доступ в такой же последовательности, в какой они
записывались.
Файлом прямого доступа называется файл, доступ к элементам которого
осуществляется по адресу элемента.
4
Например, для поиска нужного элемента в последовательном файле
необходимо, начиная с нулевого, перемещать указатель обработки до тех пор,
пока он не будет указывать на искомый элемент, а при поиске нужного
элемента в файле прямого доступа достаточно указать номер его позиции. При
организации данных в файл последовательного доступа нельзя одновременно
читать данные из файла и записывать данные в файл, так как для чтения
некоторого элемента этот указатель обработки помещен на данный элемент,
а для записи нового элемента этот указатель одновременно должен быть в
конце файла.
1.
2.
3.
4.
Алгоритм, рекомендуемый при работе с файлами.
установить соответствие между файлом и файловой переменной;
открыть файл с определенной целью (чтение, запись);
работа с файлом;
закрытие файла.
Средства обработки файлов.
Процедуры и функции для всех типов файлов
ASSIGN(F,NAME);
CLOSE(F);
Связь файловой переменной F с
внешним файлом NAME.
Каждому файлу в языке ставится в
соответствие файловая переменная
определенного типа, поэтому перед
началом
работы
с
файлом
необходимо
установить
данное
соответствие. Данная процедура
всегда
предшествует
другим
процедурам работы с файлами, так
как
впоследствии
все
другие
файловые
процедуры
будут
обращаться не к имени файла на
диске, а к данной файловой
переменной, связанной с реальным
файлом. Данную процедуру нельзя
использовать для уже открытого
файла. Для этого необходимо с
помощью
процедуры
CLOSE
закрыть этот файл.
Закрытие открытого файла.
Операция
закрытия
является
логическим окончанием работы с
любым
открытым
файлом.
Использование данной процедуры
5
ERASE(F);
RENAME(F,NEWNAME);
RESET(F[, SIZE]);
REWRITE(F[, SIZE]);
EOF(F);
позволяет устранить связь файловой
переменной с внешним файлом,
установленную
с
помощью
процедуры ASSIGN.
Процедура, удаляющая неоткрытый
внешний
файл
любого
типа,
задаваемый переменной F.
Удаление осуществляется только для
реально существующего файла.
Переименование внешнего файла.
Осуществляется только для уже
реально существующего файла.
Открывает уже существующий файл,
с
которым
связна
файловая
переменная F, и указатель текущего
компонента файла настраивается на
начало
файла.
Необязательный
параметр
целого
типа
SIZE
используется только с файлами без
типа и задает размер пересылаемого
элемента информации в байтах (по
умолчанию 128)
Открывает новый пустой файл, и ему
присваивает
имя,
заданное
процедурой ASSIGN.
Если файл с таким именем уже
существует, то он уничтожается
Конец файла
Процедуры и функции для работы с текстовыми файлами
APPEND(F);
FLUSH(F);
READ(F, <список>);
READLN(F, <список>);
SETTEXTBUF(F, BUF);
Открытие файла для добавления в
конец информации
Отображает буфер выходного файла.
Информация из буфера вывода
записывается в файл, с которым
связана файловая переменная F.
Чтение из файла
Чтение строки из файла
Назначение буфера ввода-вывода.
Для файла, с которым связана
файловая переменная F, назначается
буфер
ввода-вывода
в
виде
переменной BUF любого типа.
6
WRITE(F, <список>);
WRITELN(F, <список>);
EOLN(F);
SEEKEOF(F);
SEEKEOLN(f);
Запись в файл
Запись строки в файл
Конец строки файла
Конец файла
Конец строки файла.
Пропускает в конце строки символы
пробела и табуляции.
Примеры программ, обработки текстовые файлы:
1. Создать простой текстовый файл с именем WORK.TXT.
Var f :text;
Begin
Assign(f, ‘WORK.TXT’);
Rewrite(f);
Write(f, ‘Простой текстовый файл’);
Close(f);
End.
2. Удалить или переименовать уже существующий файл.
Var f: text;
ch: char;
st: string;
begin
write(‘Введите имя файла: ’);
read(st);
assign(f, st);
write(‘Удалить файл(У), Переименовать(П), Выход(В)’);
readln(ch);
case ch of
‘У’,’у’: erase(f);
‘П’,’п’: begin
write(‘Введите новое имя файла: ’);
readln(st);
rename(f, st);
end;
‘В’,’в’: halt(1);
{Прерывание программы}
end;
end.
7
3. Считать данные из первого файла, и записать их во второй файл,
удвоив каждый элемент через пробел.
Var f1, f2: text;
x: char;
st:string;
begin
write(‘Введите имя файла: ’);
readln(st);
assign(f1, st);
reset(f1);
assign(f2,’result.txt’);
rewrite(f2);
while not eof (f1) do
begin
read(f1,x);
write(f2, x + ‘ ‘ + x );
end;
close(f1);
close(f2);
end.
4. Подсчитать количество символов и строк в текстовом файле.
Var f: text;
s: string;
n, k: integer;;
begin
writeln(‘Введите имя файла: ’);
readln(st);
assign(f, st);
reset(f);
n:=0;
k:=0;
while not eof (f) do
begin
readln(f, s);
n:=n+length(s);
k:=k+1;
end;
writeln(‘в файле ’, n, ‘ символов и ’,k, ‘ строк’ );
close(f);
end.
Download