[英]delphi insert text into textfile at specific point
我想編輯一個文本文件。 如果我讀了一個特殊的行(讓我們說// - 開始在這里編輯文本 - //)然后在這行后我想插入幾行,但我不想覆蓋現有的行。 用delphi可以嗎? 謝謝!
示范文本:
這個
是一個文件
帶有文字
// - 開始在這里插入文字 - //
兩者之間沒什么
編輯后的示例文本:
這個
是一個文件
帶有文字
// - 開始在這里插入文字 - //
現在有一些東西
之間
兩者之間沒什么
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;
有幾種方法可以做到這一點。
最簡單的版本:
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
類允許您操作文件的實際字節。 通常,您需要閱讀,直到找到預期的文本。 然后提前讀取並緩存文件的其余部分,同時寫出文件的新結尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.