我有一个.txt文件,我想用新的一行替换一行。这些是步骤:
我该怎么做?
答案 0 :(得分:8)
像这样:
var
Strings: TStringList;
....
Strings := TStringList.Create;
try
Strings.LoadFromFile(FileName);
Strings[LineIndex] := NewValue;
Strings.SaveToFile(FileName);
finally
Strings.Free;
end;
答案 1 :(得分:2)
使用较新的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.
答案 2 :(得分:1)
如果您不想浪费内存一次加载整个源文件,可以使用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;