Файлы и примеры работы с файлами

Файл — это логическое понятие, связанное с физически существующим набором данных. Файловые типы предназначены для работы с внешними устройствами.

Передача данных с внешнего устройства в оперативную память называется чтением или вводом, обратный процесс – записью или выводом.

Определены три типа файлов:• текстовые; • нетипизированные;• типизированные;

Текстовый файл состоит из строк символов. Конец записи определяется концом строки. Чтение и запись в файл осуществляется посимвольно. Типизированный файл состоит из записей любого типа.

Особенности типизированных файлов: • файл может состоять из записей любого типа; • данные передаются целыми записями (не символами или строками); • при создании файла записи в нем автоматически нумеруются;

Нетипизированные файлы - каналы ввода/вывода нижнего уровня, исполь-зуемые в основном для прямого доступа к любому файлу на диске, неза-висимо от его типа и структуры.

Доступ к файлам может быть последовательным или прямым.

Последовательный доступ – очередной элемент можно прочитать только после прочтения предыдущего.

Прямой доступ – чтение произвольного элемента выполняется по задан-ному адресу (процедура Seek).

Такой способ возможен для файлов всех типов, кроме текстового (т.е. для типизированных и нетипизированных, в которых каждой записи ста-вится в соответствие ее порядковый номер.

При использовании прямого доступа необходимо перед каждой операцией чтения (записи) задать номер записи, которая должна быть обработана. После выполнения операции указатель файла устанавливается перед сле-дующей записью (т.е. перед записью с номером, увеличенным на 1).

Для установки указателя на нужную запись используется специальная процедура Seek, которая в общем виде записывается так:

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

Организация ввода-вывода:

• объявление файловой переменной;
• связывание файловой переменной с физическим файлом;
• открытие файля для чтения и/или записи;
• выполнение операции ввода-вывода;
• закрытие файла;

Замечания.

• Клавиатура, принтер, дисплей - устройства. Устройство можно представить как на-бор данных и с ним можно работать, используя те же процедуры и функции, которые применяются для работы с файлом.

• Устройства: Con – консоль, посредством которой выводимая информация пересылается на экран, а вводимая информация воспринимается с клавиатуры; Lpt1 или Prn – по-строчное устройство печати.

• Когда начинается выполнение программы, всегда автоматически открываются два тек-стовых файла Input и Output. Input (ввод) – это доступный только для чтения файл, связанный с клавиатурой, а Output (вывод) – это доступный только для запи-си файл, связанный с дисплеем.

Rewrite создает и открывает новый файл. Если внешний файл с указанным именем уже существует, то он удаляется и на его месте создается новый пустой файл. Текущая позиция в файле устанавливается на начало файла. Если открывается текстовый файл, то он становится доступным только для записи.

Reset открывает существующий файл. Если файл уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция файла устанавливается на начало файла. Если открывается текстовый файл, то он становится доступным только для чтения.

Append открывает существующий текстовый файл для добавления записей в конец файла. Если файл уже открыт, то он сначала закрывается, а затем открывается вновь. Текущая позиция устанавливается на конец файла.

Сlose. В момент закрытия осуществляется полное обновление внешнего набора данных, связанного с файловой переменной, после чего связь с набором данных разрывается. Потом файл можно открыть снова.

Пример. Создание текстового файла. Ввести с клавиатуры n строк, записать их в текстовый файл. Имя набора данных задать с клавиатуры.
Program SozdText;
Var
Tx:Text;{Имя текстового файла}
FilName : String; {Имя набора данных}
Stroka : String; {Строка текста}
i,n : Integer; {Вспомогательные переменные}
Begin
Writeln(’Введите имя набора данных’);
Readln (FilName); {Ввести Имя Набора Данных}
Assign(Tx,FilName); {Связать Файл с Набором Данных}
Rewrite (Tx); {Открыть Файл для записи}
Writeln (’Введите кол-во строк текста’);
Readln(n); {Ввести количество строк}
Writeln (’Введите строки’);
For i:=1 to n do
Begin
Readln (Stroka); {Ввод строки с клавиатуры}
Writeln(Tx,Stroka); {Запись в файл}
End;
Close(Tx); {Закрыть файл}
End.
Пример. Вывод существующего текстового файла
Program VivodFile;
Var
Tx : Text; FilName,Str : String;
KolStr : Integer;
Begin
Writeln(’Введите имя НД ’);
Readln(FilName); {Ввести Имя Набора Данных}
Assign(Tx,FilName); {Связать Файл с Набором Данных}
Reset(Tx); {Открыть Файл для чтения}
KolStr := 0;
Writeln(’Содержимое набора’);
While Not Eof(Tx) do {Пока не конец файла}
Begin
Readln (Tx,Str);
KolStr := KolStr+1;
Writeln(Str); {вывод на экран}
End;
Writeln(’Кол-во строк - ’, kolstr);
Close(Tx); {Закрыть файл}
End.
Пример. Создание типизированного файла.
Program Sozd_Fil;
Const
 M=5; { Количество оценок }
Type
 Stud=Record
 Fam,Im,Ot:String[10];
 NumZ:LongInt;
 Otm: Array[1..M] Of Integer;
 End;
 Var
 Vedom : File Of Stud;
 A : Stud;
 FilName : String; { имя набора данных }
 j,i,n : Integer;
 Begin
 Writeln(’Введите имя набора данных’);
 Readln(FilName);
 Assign(Vedom,FilName);
 Rewrite(Vedom); {Открытие файла для записи}
 Writeln(’Введите количество студентов’);
 Readln(n);
 Writeln (’Вводите сведения о каждом студенте’);
 For i:=1 to n do
 Begin
 With A do
 Begin
 Write(’Фамилия: ’);ReadLn(Fam);
 Write(’Имя: ’);ReadLn(Im);
 Write(’Отчество: ’);ReadLn(Ot);
 Write(’Номер зачетки: ’);
 ReadLn(Numz);
 WriteLn(’Введите оценки по одной:’);
 For J := 1 to 5 do
 Begin
 WriteLn(’Введите ’,J,’ -ю оценку’);
 ReadLn(Otm[j]);
 End;
 End;
 Write(Vedom,A); {Запись в файл переписывается целиком}
 End;
 Close(Vedom);
 Writeln (’Конец работы. Нажмите клавишу ENTER’);
 ReadLn;
End.
Онлайн всего: 4
Гостей: 4
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте