【发布时间】:2013-05-24 08:13:52
【问题描述】:
我有一个 .txt 文件,我想用新的一行替换一行。步骤如下:
- 读入 .txt 文件
- 将源保存到 TStringList
- 修改特定行中的一些数据
- 将新数据保存回原始文件。
我该怎么做?
【问题讨论】:
标签: delphi
我有一个 .txt 文件,我想用新的一行替换一行。步骤如下:
我该怎么做?
【问题讨论】:
标签: delphi
像这样:
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;
【讨论】: