1

我有一个 .txt 文件,我想用新的一行替换一行。这些是步骤:

  1. 读入 .txt 文件
  2. 将源保存到 TStringList
  3. 修改特定行中的一些数据
  4. 将新数据保存回原始文件。

我该怎么做呢?

4

3 回答 3

8

像这样:

var
  Strings: TStringList;
....
Strings := TStringList.Create;
try
  Strings.LoadFromFile(FileName);
  Strings[LineIndex] := NewValue;
  Strings.SaveToFile(FileName);
finally
  Strings.Free;
end;
于 2013-05-24T08:16:20.203 回答
3

使用较新的 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.
于 2013-05-24T13:43:38.860 回答
1

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

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;
于 2013-05-24T14:16:40.713 回答