Spec-Zone.ru › Ada 95
Руководство по Ada 95

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 := "");
Создает новый внешний файл с заданным именем и формой и связывает этот внешний файл с заданным файлом. Заданный файл остается открытым. Текущий режим заданного файла устанавливается в соответствии с заданным режимом доступа. По умолчанию режим доступа равен 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 := "");
Связывает заданный файл с существующим внешним файлом с заданным именем и формой и устанавливает текущий режим заданного файла в соответствии с заданным режимом. Заданный файл остается открытым.
Исключение 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);
Сбрасывает заданный файл, чтобы чтение элементов можно было перезапустить с начала файла (для режимов 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, если попытка использовать функцию ввода-вывода не может быть поддержана реализацией из-за ограничений во внешней среде. Любое такое ограничение должно быть задокументировано.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API