Стандартный способ сделать это - попытаться открыть файл в режиме добавления, а если это не удастся, создайте его (снова в режиме добавления).Если создание файла не удается, у вас есть другая проблема (например, недопустимое имя? Нет разрешений? Файловая система доступна только для чтения? Файловая система заполнена? Ни один из них не может быть адресован в вашей программе!)создать, если открыть не удалось;и наоборот, файл может быть сброшен, а это именно то, что вам не нужно.
with Ada.Text_IO;
with Ada.Calendar.Formatting;
with Ada.IO_Exceptions;
procedure Appending is
Output : Ada.Text_IO.File_Type;
Name : constant String := "appending.dat";
begin
Нам нужен блок здесь, поэтому здесь может быть поймано исключение.
begin
Попробуйте открыть файл ...
Ada.Text_IO.Open (File => Output,
Name => Name,
Mode => Ada.Text_IO.Append_File);
Open
успешно!
exception
when Ada.IO_Exceptions.Name_Error =>
Open
не удалось, поскольку имя не представляет открываемый файл.Попробуйте создать его ...
Ada.Text_IO.Create (File => Output,
Name => Name,
Mode => Ada.Text_IO.Append_File);
Файл Output
теперь открыт в режиме добавления.
(На первый взгляд, вы можете спросить, какой смысл открывать файл, который должен иметьв режиме добавления был пуст. Обычно, конечно, он также мог бы быть открыт в режиме стандартного выхода, единственное отличие было бы, если бы по какой-то причине вам пришлось использовать немодальный Reset
.в этом случае, если файл был создан в режиме добавления, он останется в режиме добавления, поэтому все предыдущие обновления не будут потеряны.)
end;
Напишите что-нибудь «уникальное» для него, чтобы мы могли сказатьэто сработало ...
Ada.Text_IO.Put_Line
(File => Output,
Item => Ada.Calendar.Formatting.Image (Ada.Calendar.Clock));
... и мы закончили.Может оставить ОС, чтобы закрыть файл для нас при выходе, но давайте будем уверены.
Ada.Text_IO.Close (File => Output);
end Appending;