Справочник по Ada 2005
A.8.2 Управление файлами
Статическая семантика
Процедуры и функции, описанные в этом подпункте, обеспечивают управление внешними файлами; их объявления повторяются в каждом из пакетов для последовательного, прямого, текстового и потокового ввода-вывода. Для текстового ввода-вывода процедуры Create, Open и Reset имеют дополнительные эффекты, описанные в подпункте A.10.2.
procedure Create(File : in out File_Type;
Mode : in File_Mode := default_mode;
Name : in String := "";
Form : in String := "");
Mode : in File_Mode := default_mode;
Name : in String := "";
Form : in String := "");
Создаёт новый внешний файл с заданным именем и формой и связывает этот внешний файл с заданным файлом. Заданный файл остаётся открытым. Текущий режим заданного файла устанавливается в заданный режим доступа. По умолчанию режим доступа — Out_File для последовательного, потокового и текстового ввода-вывода; для прямого доступа — Inout_File. Для прямого доступа размер созданного файла определяется реализацией.
Строка null для Name указывает на внешний файл, недоступный после завершения основной программы (временный файл). Строка null для Form указывает на использование по умолчанию опций реализации для внешнего файла.
Исключение Status_Error распространяется, если данный файл уже открыт. Исключение Name_Error распространяется, если строка, заданная как Name, не позволяет идентифицировать внешний файл. Исключение Use_Error распространяется, если для указанного режима внешняя среда не поддерживает создание внешнего файла с заданным именем (в отсутствие Name_Error) и формой.
procedure Open(File : in out File_Type;
Mode : in File_Mode;
Name : in String;
Form : in String := "");
Mode : in File_Mode;
Name : in String;
Form : in String := "");
Связывает данный файл с существующим внешним файлом, имеющим заданное имя и форму, и устанавливает текущий режим данного файла в заданный режим. Заданный файл остаётся открытым.
Исключение Status_Error распространяется, если данный файл уже открыт. Исключение Name_Error распространяется, если строка, заданная как Name, не позволяет идентифицировать внешний файл; в частности, это исключение распространяется, если внешний файл с заданным именем не существует. Исключение Use_Error распространяется, если для указанного режима внешняя среда не поддерживает открытие внешнего файла с заданным именем (в отсутствие Name_Error) и формой.
procedure Close(File : in out File_Type);
Прерывает связь между данным файлом и связанным с ним внешним файлом. Заданный файл закрывается. Кроме того, для последовательных файлов, если закрываемый файл имеет режим Out_File или Append_File, то последний элемент, записанный с момента последнего открытия или сброса, является последним элементом, который можно прочитать из файла. Если элементы не были записаны, и режим файла — Out_File, то закрытый файл пуст. Если элементы не были записаны, и режим файла — Append_File, то закрытый файл не изменяется.
Исключение Status_Error распространяется, если данный файл не открыт.
procedure Delete(File : in out File_Type);
Удаляет внешний файл, связанный с данным файлом. Данный файл закрывается, и внешний файл перестаёт существовать.
Исключение Status_Error распространяется, если данный файл не открыт. Исключение Use_Error распространяется, если удаление внешнего файла не поддерживается внешней средой.
procedure Reset(File : in out File_Type; Mode : in File_Mode);
procedure Reset(File : in out File_Type);
procedure Reset(File : in out File_Type);
Сбрасывает заданный файл, чтобы чтение его элементов можно было перезапустить с начала внешнего файла (для режимов In_File и Inout_File), и чтобы запись в его элементы можно было перезапустить в начале внешнего файла (для режимов Out_File и Inout_File) или после последнего элемента внешнего файла (для режима Append_File). В частности, для прямого доступа это означает, что текущий индекс устанавливается в единицу. Если параметр Mode задан, текущий режим данного файла устанавливается в заданный режим. Кроме того, для последовательных файлов, если данный файл имеет режим Out_File или Append_File при вызове Reset, последний элемент, записанный с момента последнего открытия или сброса, является последним элементом, который можно прочитать из внешнего файла. Если элементы не были записаны и режим файла — Out_File, сброшенный файл пуст. Если элементы не были записаны и режим файла — Append_File, то сброшенный файл не изменяется.
Исключение Status_Error распространяется, если файл не открыт. Исключение Use_Error распространяется, если внешняя среда не поддерживает сброс для внешнего файла, а также если внешняя среда не поддерживает сброс в указанный режим для внешнего файла.
function Mode(File : in File_Type) return File_Mode;
Возвращает текущий режим данного файла.
Исключение Status_Error распространяется, если файл не открыт.
function Name(File : in File_Type) return String;
Возвращает строку, которая однозначно идентифицирует внешний файл, текущий связанный с данным файлом (и, следовательно, может быть использована в операции Open).
Исключение Status_Error распространяется, если данный файл не открыт. Исключение Use_Error распространяется, если связанный внешний файл является временным файлом, который не может быть открыт ни под каким именем.
function Form(File : in File_Type) return String;
Возвращает строку формы для внешнего файла, который в настоящее время связан с данным файлом. Если внешняя среда допускает альтернативные спецификации формы (например, сокращения с использованием опций по умолчанию), возвращаемая функцией строка должна соответствовать полной спецификации (то есть она должна явно указывать все выбранные опции, включая опции по умолчанию).
Исключение Status_Error распространяется, если данный файл не открыт.
function Is_Open(File : in File_Type) return Boolean;
Возвращает True, если файл открыт (то есть если он связан с внешним файлом), в противном случае возвращает False.
Разрешения реализации
Реализация может распространять Name_Error или Use_Error, если попытка использовать функцию ввода-вывода не может быть поддержана реализацией из-за ограничений во внешней среде. Любое такое ограничение должно быть задокументировано.