【发布时间】:2019-10-17 07:23:41
【问题描述】:
我有一个像这样的文件.\input.txt:
aaa
bbb
ccc
如果我使用TStrings.LoadFromFile 读取它并使用TStrings.SaveToFile 将其写回(即使没有应用任何更改),它会在输出文件的末尾创建一个空行。
var
Lines : TStrings;
begin
Lines := TStringList.Create;
try
Lines.LoadFromFile('.\input.txt');
//...
Lines.SaveToFile('.\output.txt');
finally
Lines.Free;
end;
end;
使用TStrings.Text 属性可以观察到相同的行为,该属性将返回一个在其末尾包含一个空行的字符串。
【问题讨论】:
-
只是想知道,即使文件中没有应用任何更改,您到底为什么还要写回它?为什么不直接阅读呢?
-
@BilalAhmed:当然,这是一个简化的测试,在对字符串列表应用更改时会出现相同的空行
-
“创建一个空行”我猜你的意思是你的原始文件不以
\n字符结尾,并且函数将\n添加到文件中?还是该函数在文件末尾的现有\n之后直接添加\n? POSIX 要求文本文件的所有行都以\n结尾,仅供参考。许多软件都是为了遵循某些标准而编写的,所以这就是为什么很多编辑器会在默认情况下保存文件时添加缺少的终止\n(例如vim、IDE 等默认情况下都会使您的文件符合 POSIX 标准。)
标签: delphi tstringlist