2010-03-12 18 views
0

,爲什麼我不會總是使用r +,即使我不打算寫任何東西......是否有理由將文字分開/讀取過程僅讀..fopen r +和r!有什麼不同?當我使用fopen函數時,如果我不打算使用r +

一樣,該文件被鎖定看書時我用R +,因爲我可能會寫新的數據到它或東西...

另一個問題: PHP手冊

a +:開放閱讀和寫作; 將文件指針放在文件的末尾 處。如果文件不存在, 會嘗試創建它。

如果你在文件末尾,應該讀什麼......(指針在最後)!!?

從哪裏瞭解更多有關文件系統的東西....這是令人困惑

回答

0

r+在操作系統級別與r分配更多一點點,但是這並不足以真正擔心。

在文件末尾讀取將返回EOF;在PHP中,fread()顯示返回一個空字符串。

這些模式在fopen(3) man page中描述。

+0

所以,我可能總是使用r +,a +,w +? – 2010-03-12 16:42:50

+0

如果底層文件系統支持它,當然。使用只讀或只寫(是的,那些確實存在)文件系統時,可能會遇到問題。 – 2010-03-12 16:47:39

1

根據the manual page of fopen

  • r+指 「打開用於讀取和寫入
  • r指 「打開,只用於讀
  • 在兩種情況下,將光標放置在文件的開頭。

即時猜測一對夫婦的差別是:

  • Witf r+,如果該文件是寫鎖定,您將無法閱讀書寫
  • 開幕(即r+ )可能需要更多的資源。

所以,如果你只需要從文件中讀取,你應該使用r,而不是r+ - 畢竟,r意味着「閱讀(一般來說,你不應該問比你更需要)


關於您a+的問題:即使你是在它打開時,你可以使用fseek更改文件中光標的位置在文件的結尾。

這意味着你不限於文件的末尾:如果需要,你可以從別處讀取。

4

r vs r +:r +實際上會打開文件進行讀寫,但會將poitner放在開頭。不會截斷/刪除文件(不像w/w +),所以你可以讀取和覆蓋文件數據

w vs w +:w和w +會創建/刪除文件,w +也會允許你讀取(所以如果你寫你可以使用fseek重新讀你寫的東西)。注意文件將在兩種情況下被刪除,原創內容將丟失。使用w +你可以使用fseek返回並覆蓋文件中的數據(而不是重新創建文件進行小的更改)

a vs a +:a將打開寫入,a +也允許讀取。該文件不會被截斷,您可以使用fseek來後退/前進。指針將被放置在最後。 a +就像r +,但是最後會有指針 - 如果你需要先寫入/追加,則保存一個fseek命令然後正確

x vs x +:這就像w/w +,但是如果文件存在就會失敗(即從不截斷/刪除文件)

相關問題