Ada:附加文本文件中的退格键
Ada: Backspace in Appended Text File
我了解到您可以 open/close 一个 txt 文件并多次写入(追加)。虽然,每次我这样做都是从新的一行开始的。无论如何我可以回到光标停止的地方吗?
谢谢!
是的。使用另一个 I/O 包而不是 Ada.Text_IO
。一种选择是使用用适当的字符类型实例化的通用包 Ada.Direct_IO
。
使用 String
类型的流和流属性 'Write
。该属性表示将输出字符串对象的裸数据的过程。
with Ada.Streams.Stream_IO;
procedure Write_Appending is
use Ada.Streams.Stream_IO;
F : File_Type;
procedure Write_Hello is
begin
String'Write (Stream (F), "Hello, ");
end Write_Hello;
procedure Write_World is
begin
String'Write (Stream (F), "World");
end Write_World;
begin
Create (F, Name => "Hello.txt");
Write_Hello;
Write_World;
Close (F);
-- forgot "!", append it at the end of the file.
Open (F, Mode => Append_File, Name => "Hello.txt");
Character'Write (Stream (F), '!');
Close (F);
end Write_Appending;
结果文件
$ cat Hello.txt
Hello, World!$
请注意文件的最后一行没有以行终止符结尾。要写入 Current_Output
,请考虑 Ada.Text_IO.Text_Streams
(LRM A.12.2).
我了解到您可以 open/close 一个 txt 文件并多次写入(追加)。虽然,每次我这样做都是从新的一行开始的。无论如何我可以回到光标停止的地方吗? 谢谢!
是的。使用另一个 I/O 包而不是 Ada.Text_IO
。一种选择是使用用适当的字符类型实例化的通用包 Ada.Direct_IO
。
使用 String
类型的流和流属性 'Write
。该属性表示将输出字符串对象的裸数据的过程。
with Ada.Streams.Stream_IO;
procedure Write_Appending is
use Ada.Streams.Stream_IO;
F : File_Type;
procedure Write_Hello is
begin
String'Write (Stream (F), "Hello, ");
end Write_Hello;
procedure Write_World is
begin
String'Write (Stream (F), "World");
end Write_World;
begin
Create (F, Name => "Hello.txt");
Write_Hello;
Write_World;
Close (F);
-- forgot "!", append it at the end of the file.
Open (F, Mode => Append_File, Name => "Hello.txt");
Character'Write (Stream (F), '!');
Close (F);
end Write_Appending;
结果文件
$ cat Hello.txt
Hello, World!$
请注意文件的最后一行没有以行终止符结尾。要写入 Current_Output
,请考虑 Ada.Text_IO.Text_Streams
(LRM A.12.2).