我想编辑一个文本文件。如果我读了一个特殊的行(让我们说// - 开始在这里编辑文本 - //)然后在这行后我想插入几行,但我不想覆盖现有的行。用delphi可以吗?谢谢!
示例文字:
这个
是一个文件
中包含文字
// - 开始在此处插入文字 - //
之间没有任何内容 编辑后
示例文字:
此
是一个文件
中包含文字
// - 开始在此处插入文字 - //
现在有一些东西
在
之间
之间没有任何内容
答案 0 :(得分:7)
var
SL: TStringList;
InsTextPos: Integer;
begin
SL := TStringList.Create;
try
SL.LoadFromFile('c:\test.txt');
InsTextPos := SL.IndexOf('//--begin inserting text here--//');
if InsTextPos >= 0 then
begin
SL.Insert(InsTextPos+1, 'Inserting Line 2');
SL.Insert(InsTextPos+1, 'Inserting Line 1');
SL.SaveToFile('c:\test.txt');
end;
finally
SL.Free;
end;
end;
答案 1 :(得分:3)
有几种方法可以做到这一点。
最简单的版本:
var
sl : TStringList;
I : Integer;
begin
sl := TStringList.Create;
sl.LoadFromFile();
// No you have an array of strings in memory one for each line
for I := 0 to SL.Count -1 do
begin
sl.strings[I];
end;
sl.SaveToFile();
end;
您还可以使用其他文件IO命令,例如: 阅读文本文件:
var
t : TextFile;
begin
AssignFile(t,'FileName.txt');
Reset(T);
while not eof(t);
begin
Readln(T,LineOfText);
end;
CloseFile(T);
end;
写出你想要的东西..
var
t : TextFile;
begin
AssignFile(t,'FileName.txt');
Rewrite(T);
Writeln(T,LineOfText);
Writeln(T,LineOfText);
Writeln(T,LineOfText);
CloseFile(T);
end;
应该注意的是,实际上上述两种方法实际上只是重写了文件的全部内容。
TFileStream
类允许您操作文件的实际字节。通常,您需要阅读,直到找到预期的文本。然后预读并缓存文件的其余部分,同时写出文件的新结尾。