在Ruby中使用文件时,
r+
和w+
模式有什么区别? a+
模式呢?访问模式r+
,w+
和a+
以读写模式打开文件,但有以下区别:
r+
从文件开头开始,但如果文件不存在,则不会创建新文件。
w+
如果文件存在,则将现有文件截断为零长度,否则创建新文件。
a+
如果文件存在,则从文件末尾开始,否则创建新文件。
为了我自己的利益/作为参考目的:
|mode|reads|writes|starts writing at|if preexists
|r |yes | |n/a |ok
|r+ |yes |yes |beginning |fail
|w | |yes |beginning |overwrite
|w+ |yes |yes |beginning |overwrite
|a | |yes |end |append
|a+ |yes |yes |end |append
答案: r+和w+都可以读取和写入文件,但r+不会截断(删除)文件的内容,同时如果该文件不存在,则不会创建新文件;而w+会截断文件的内容,并在该文件不存在时创建一个新文件。
w+
表示追加的观念是错误的。 - akostadinovruby documentation
似乎同意fopen api
,但未能遵守它。 - Ratatouille