我有一个 .txt 文件,我想用新的一行替换一行。这些是步骤:
- 读入 .txt 文件
- 将源保存到 TStringList
- 修改特定行中的一些数据
- 将新数据保存回原始文件。
我该怎么做呢?
我有一个 .txt 文件,我想用新的一行替换一行。这些是步骤:
我该怎么做呢?
像这样:
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.
如果您不想一次加载整个源文件而浪费内存,您可以使用TStreamReader
and一次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;