2012-05-01 201 views
0

我在'test.txt'文件中包含以下內容:lucas
我想在文件中尋找指針並覆蓋未來的信息。應該我做的:爲什麼PHP文件處理程序無法正常工作?

$f = new SplFileObject('test.txt', 'a'); 

$f->fseek(-5, SEEK_END); 

var_dump($f->ftell()); 

$f->fwrite('one'); 

這將產生:oneas但執行的結果:lucasone

我非常喜歡的代碼邏輯,甚至不工作呢?

如何正確地做我想做的事?

回答

3

您打開該文件進行追加:

$f = new SplFileObject('test.txt', 'a'); 

這意味着你不能在文件中尋求。相反,打開它,閱讀和寫作:

$f = new SplFileObject('test.txt', 'r+'); 

他們還表示,它在fseek documentation

如果你已經打開以附加文件(A或A +)模式,你寫任何數據無論文件位置如何,該文件將總是被追加,並且調用fseek()的結果將是未定義的。

+0

那麼......我改變了模式,但文件被截斷了!根據PHP官方網站:w模式:「打開僅用於寫入;將文件指針放在文件的開頭,並將文件截斷爲零長度,如果文件不存在,請嘗試創建它。我不想截斷文件,我想要這個結果:「oneas」 –

+0

當你正在閱讀文檔時,確定...爲什麼你不選擇不截斷文件的不同模式?它就在同一個文檔頁面上。 – kuba

+1

例如「r +」這樣做:「打開讀取和寫入;將文件指針放在文件的開頭。」我會更新我的答案 – kuba

相關問題