我有一个。txt文件,我想用新的行替换一行。步骤如下:
- 读取。txt文件
- Save Source to a TStringList
- 修改特定行中的某些数据
- 将新数据保存回原文件
我该怎么做?
像这样:
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
和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;