IT-Swarm.Net

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

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

52
Ogrish Man

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

报价:

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

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

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

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

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

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

(强调我的。)

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

117
Jonathan Fingland

快速,可靠且价格合理的云托管

注册并在30天内获得$50奖金!

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

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

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

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

10
user1134160

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

|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
8
Paul van Leeuwen

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

6
rishi