2014-09-23 46 views
3

我們可以重寫一行文本文件,然後保存並關閉它嗎?Delphi重寫單行

例如,我需要重寫第一行,並保留所有其他行。有沒有這樣做的功能,或者我必須在更改一行後複製整個文件?

我的文件包含的不僅僅是一條線,而且我只需要更改第一條線。文件

例子:

test;test1;test2 
other;other;other 
other;other;other 
x1000 

然後

something;something;something 
other;other;other 
other;other;other 
x1000 

明白我的意思?我只是想保留我的文件,但改變了第一行。我可以複製整個文件並粘貼它後,我改變了第一行,但我想知道是否有一種方法已經包含在德爾福只改變文本文件中的特定行。謝謝!

+0

http://stackoverflow.com/questions/13736707/modifying-or-deleting-a-line-from-a-text-file-the-low-level-way – 2014-09-23 09:11:07

回答

6

這是不可能的。文件線性存儲,不支持插入。如果你的線路是固定的長度,那麼你可以覆蓋它。但是,您希望用更長的新內容替換該行。這是不能做到的。您需要重新編寫整個文件。

數據庫可能比文本文件更適合您的需要。

+0

從數據庫轉儲?我希望你不是[這樣做](http://thedailywtf.com/Articles/A-Repetitive-Task.aspx) – 2014-09-23 09:12:21

+2

+1問題是清楚的,這是唯一正確的答案。由於這是一個問答網站,目前接受的答案不會**回答所問的問題。 OP應該改變問題,刪除它或者改變接受的答案...... *(在我過去的日子裏變得脾氣暴躁......哦,唔......)* – 2014-09-23 10:30:05

+0

拿這個,點在這裏我很重要^^ – user28470 2014-09-23 11:23:17

2

我覺得這裏最簡單的方法會以這種方式使用的TStringList:

procedure InPlaceFileEdit(fFile : String); 
begin 
F:=TStringList.Create; 
try 
    F.LoadFromFile(fFile); 
    F.Strings[0]:='something;something;something' ;// Change the contents of the first line 
    F.SaveToFile(fFile); 
finally 
F.Free 
end 
end; 

當然,這是完全每次重寫文件一招。

+0

完美的作品謝謝你:D – user28470 2014-09-23 09:19:05

+2

請注意這就是你要求不要做的事情,即重寫整個文件。如果文件需要以這種方式更改,那麼你別無選擇,但不要誤以爲你正在避免重寫文件。 – 2014-09-23 09:41:44

+0

如果你有一個解決方案,只重寫一行文件,你可以在這裏發佈。 Idk如果delphi擁有那種'編輯器'來處理文件 – user28470 2014-09-23 09:47:41