Ада-95. Компилятор GNAT

       

Пакет AdaText_IO


Основой организации текстового ввода/вывода Ады является пакет Ada.Text_IO

и коллекция его дочерних пакетов.

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

Примерами таких средств могут служить подпрограммы Close, Delete, Reset, Open, Create ...

Главный тип данных пакета Ada.Text_IO - это лимитированный приватный тип File_Type. Он является внутренним представлением файла.

Стандарт Ada95 добавил тип File_Access, как ссылку на тип File_Type

(объекты имеющие тип File_Access часто называют дескрипторами файлов).

При открытии или создании файла, производится ассоциирование между именем файла в системе и объектом типа File_Type.

Кроме того, при открытии или создании файла, необходимо указывать режим доступа к файлу:



In_File чтение файла
Out_File  -  запись в файл
Append_File  -  запись в конец существующего файла (Ada95)

Заметим, что эти значения имеют тип File_Mode, который также описывается в пакете Ada.Text_IO.

После этого, объект типа File_Type может быть использован для выполнения непосредственных обращений к файлу.

В приведенном ниже примере, процедура Create создает файл "first_file.dat", после чего, в этот файл процедурами Put и New_Line производится запись строки "It is my first text file!".

В завершение, процедура Close закрывает ранее открытый файл.

with Ada.Text_IO; use Ada.Text_IO;

procedure Demo_File_IO is

My_File : Ada.Text_IO.File_type;

begin

Create(File => My_File, Mode => Out_File, Name => "first_file.dat");

Put(File => My_File, Item => "It is my first text file!");

New_Line(My_File);

Close(My_File); -- требуется! Ада может не закрыть -- открытый вами файл end Demo_File_IO;

Программа, представленная в следующем примере, выполняет посимвольное чтение данных из одного файла ("input.dat") и посимвольную запись этих же данных в другой файл ("output.dat").

with Ada.Text_IO; use Ada.Text_IO;

procedure Read_Write is

Input_File : File_type; Output_File : File_type; Char : Character;

begin

Open(Input_File, In_File, "input.dat"); Create(Output_File, Out_File, "output.dat");

while not End_Of_File(Input_File) loop

while not End_Of_Line(Input_File) loop

Get(Input_File, Char); Put(Output_File, Char); end loop; Skip_Line(Input_File); New_Line(Output_File); end loop;

Close(Input_File); Close(Output_File); end Read_Write;

<


Необходимо обратить внимание на то, что в таких языках программирования как Ада и Паскаль существует концепция терминатора строки, который не является обычным символом файла.

Это значит, что понятие "конец строки" ("End Of Line", или сокращенно - EOF) Ады отличается от того, что принято в системах DOS, Windows и UNIX.

В этих системах для обозначения конца строки используется обычный символ (символ "CR" - для UNIX, и символы: "CR", "LF" - для DOS и Windows), который может быть обработан обычными средствами символьной обработки.

Для того чтобы, при чтении из файла, процедура Read

"прошла" этот терминатор, необходимо использовать процедуру Skip_Line.

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

Пакет Ada.Text_IO обеспечивает большое число процедур для выполнения различных файловых манипуляций.

В качестве примера наиболее часто используемых процедур можно перечислить следующие процедуры:

Create  -  Создает файл с указанным именем и режимом использования. Примечательно, что если файл имеет строку null, то файл является временным и позднее будет удален.
Open  -  Открывает файл с указанным именем и режимом использования.
Delete  -  Удаляет указанный файл. При попытке удалить открытый файл происходит ошибка.
Reset  -  Возвращает позицию чтения (или записи) в начало файла.
К наиболее часто используемым функциям пакета Ada.Text_IO, которые возвращают статус системы файлового обмена, можно отнести следующие функции:

End_of_File  -  Возвращает истину если мы находимся в конце текущего файла.
End_of_Line  -  Возвращает истину если мы находимся в конце текущей строки текста.
Is_Open  -  Возвращает истину если текущий файл открыт.
Mode  -  Возвращает режим использования текущего файла.
Name  -  Возвращает строку имени текущего файла.
Заметим, что список перечисленных здесь подпрограмм далеко не полон и имеет лишь ознакомительный характер.

Поэтому, для получения более подробных сведений лучше всего непосредственно обратиться к спецификации пакета Ada.Text_IO.


Содержание раздела