`File`对象的访问模式之间的区别(即w +,r +)

Jus*_*ner 55 ruby io file-io file

在Ruby中使用文件时,r+w+模式之间有什么区别?a+模式怎么样?

Jon*_*and 125

请参阅http://www.tutorialspoint.com/ruby/ruby_input_output.htm

报价:

r
只读模式.文件指针位于文件的开头.这是默认模式.

r +
读写模式.文件指针将位于文件的开头.

w
只写模式.如果文件存在,则覆盖文件.如果该文件不存在,则创建一个用于写入的新文件.

w +
读写模式.如果文件存在,则覆盖现有文件.如果该文件不存在,则创建一个用于读写的新文件.

一个
只写模式.如果文件存在,则文件指针位于文件的末尾.也就是说,文件处于追加模式.如果该文件不存在,则会创建一个用于写入的新文件.

a +
读写模式.如果文件存在,则文件指针位于文件的末尾.该文件以追加模式打开.如果该文件不存在,则会创建一个用于读写的新文件.

(强调我的.)

r +,w +和a +都是读写.w +截断文件.a +追加.如果文件不存在,w +和a +都会创建文件.)


小智 11

访问模式r+,w+a+读写模式打开文件,但有以下区别:

r+ 从文件开头开始,但如果不存在则不会创建新文件.

w+ 如果文件存在,则将现有文件截断为零长度,否则创建新文件.

a+ 如果文件存在,则从文件末尾开始,否则创建新文件.


Pau*_*wen 10

为了我自己的利益/供参考:

|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
Run Code Online (Sandbox Code Playgroud)


小智 6

答:r +和w +我们都可以读取,写入文件但r +不会截断(删除)文件的内容,如果这样的文件没有退出,它就不会创建新文件而在w +截断文件的内容以及如果此类文件不存在则创建新文件.