Delphi替换一条线



我有一个。txt文件,我想用新的行替换一行。步骤如下:

  1. 读取。txt文件
  2. Save Source to a TStringList
  3. 修改特定行中的某些数据
  4. 将新数据保存回原文件

我该怎么做?

像这样:

var
  Strings: TStringList;
....
Strings := TStringList.Create;
try
  Strings.LoadFromFile(FileName);
  Strings[LineIndex] := NewValue;
  Strings.SaveToFile(FileName);
finally
  Strings.Free;
end;

使用较新的Delphi,您可以在单个调用TFile.ReadAllLines()中以字符串数组的形式获取文件的内容。

program TestModifyLine;  {$APPTYPE CONSOLE}
uses Types,IoUtils;
procedure ModifyLine(fn:string;Index:integer;NewText:String);
var lines:TStringDynArray;
begin
  lines := TFile.ReadAllLines(fn);
  lines[Index] := NewText;
  TFile.WriteAllLines(fn,lines);
end;
begin
  ModifyLine('test.txt',12,'hello');
end.

如果您不想浪费内存一次加载整个源文件,您可以使用TStreamReaderTStreamWriter一次一行地读取/写入文件,在读取之后和写入之前修改所需的行。

Var
  Reader: TStreamReader;
  Writer: TStreamWriter:
  Line: String;
  LineNum: Integer;
Begin
  Reader := TStreamReader.Create(...);
  Writer := TStreamWriter.Create(...);
  While not Reader.EndOfStream do
  Begin
    Line := Reader.ReadLine;
    Inc(LineNum);
    If LineNum = ... Then
    Begin
      ...
    End;
    Writer.WriteLine(Line);
  End;
  Writer.Free;
  Reader.Free;
End;

最新更新