2015-04-03 62 views
1

這是我見過的最古怪的東西之一。fopen()與r +就像一個?

$filename = "/etc/httpd/conf/httpd.conf"; 
$handle = fopen($filename, "r+"); 
$size = filesize($filename); 
$contents = fread($handle, $size); 
fwrite($handle,$contents); 
fclose($handle); 

不應該讀這個文件的內容然後再寫一遍嗎?基本上保持文件未修改?在這一段時間,這段代碼確實做了附加操作,它會複製文件內容並在文件末尾添加$ contents,我不知道爲什麼。在寫它之前,我試着改變一下字符串,這就是我如何發現它寫到最後,而不是開始。

回答

2

您的fread()正在推進文件指針,使您在調用fwrite時,文件指針位於最後,您的寫入將附加到該文件。

如果你想寫入文件中讀取這一切後,再從頭開始:

rewind($handle); 
+0

我不知道這是怎麼工作的。非常感謝 – aron9forever 2015-04-03 01:37:31

+0

我還有一分鐘才能做到 – aron9forever 2015-04-03 01:39:18

相關問題