如何在覆盖现有文件之前使用 TFileStream 截断它?

How can I use TFileStream to truncate the existing file before overwriting it?

我正在使用下面的代码写入现有文件,但内容被追加。清空文件并覆盖它需要哪些 TFileStream 选项?

procedure TUtilitiesForm.btnSaveClick(Sender: TObject);
var fs: TFileStream;
begin
  fs := TFileStream.Create(FileNameEdit1.Text, fmOpenWrite);
  fs.Seek(0,fsFromEnd);
  mmoDDL.Lines.SaveToStream(fs);
  fs.Free;
end;

使用 fsFromEnd 可以将数据追加到现有文件的末尾,另一方面 fsFromBeginning 从头开始​​但不会截断文件。

fmOpenWrite 更改为 fmCreate

procedure TUtilitiesForm.btnSaveClick(Sender: TObject);
var fs: TFileStream;
begin
  fs := TFileStream.Create(FileNameEdit1.Text, fmCreate);
  try
    mmoDDL.Lines.SaveToStream(fs);
  finally
    FreeAndNil(fs);
  end;
end;