fopen r +和r!有什么不同?当我使用fopen函数时,如果我不打算使用r +

问题描述:

,为什么我不会总是使用r +,即使我不打算写任何东西......是否有理由将文字分开/读取过程仅读..fopen r +和r!有什么不同?当我使用fopen函数时,如果我不打算使用r +

一样,该文件被锁定看书时我用R +,因为我可能会写新的数据到它或东西...

另一个问题: PHP手册

a +:开放阅读和写作; 将文件指针放在文件的末尾 处。如果文件不存在, 会尝试创建它。

如果你在文件末尾,应该读什么......(指针在最后)!!?

从哪里了解更多有关文件系统的东西....这是令人困惑

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

根据the manual page of fopen

  • r+指 “打开用于读取和写入
  • r指 “打开,只用于读
  • 在两种情况下,将光标放置在文件的开头。

即时猜测一对夫妇的差别是:

  • Witf r+,如果该文件是写锁定,您将无法阅读书写
  • 开幕(即r+ )可能需要更多的资源。

所以,如果你只需要从文件中读取,你应该使用r,而不是r+ - 毕竟,r意味着“阅读(一般来说,你不应该问比你更需要)


关于您a+的问题:即使你是在它打开时,你可以使用fseek更改文件中光标的位置在文件的结尾。

这意味着你不限于文件的末尾:如果需要,你可以从别处读取。

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 +,但是如果文件存在就会失败(即从不截断/删除文件)