Ruby中的文件打开模式

时间:2011-08-16 22:00:24

标签: ruby file posix

我是Ruby的新程序员。有人可以举一个关于用Ruby中的r +,w +,a +模式打开文件的例子吗?他们和r,w,a之间有什么区别?

请解释,并举例说明。

1 个答案:

答案 0 :(得分:96)

文件打开模式并不是特定于ruby的 - 它们是IEEE Std 1003.1(Single UNIX Specification)的一部分。你可以在这里阅读更多相关信息:

http://pubs.opengroup.org/onlinepubs/009695399/functions/fopen.html

r or rb
    Open file for reading.

w or wb
    Truncate to zero length or create file for writing.

a or ab
    Append; open or create file for writing at end-of-file.

r+ or rb+ or r+b
    Open file for update (reading and writing).

w+ or wb+ or w+b
    Truncate to zero length or create file for update.

a+ or ab+ or a+b
    Append; open or create file for update, writing at end-of-file.

任何包含字母'b'的模式代表二进制文件。如果'b'不存在则是'纯文本'文件。

'open'和'open for update'之间的区别表示为:

  

当使用更新模式打开文件时('+'作为mode参数中的第二个或第三个字符),可以在关联的流上执行输入和输出。但是,应用程序应确保输出不直接跟随输入,而无需调用fflush()或文件定位函数(fseek(),fsetpos()或rewind()),并且输入不会直接跟随除非输入操作遇到文件结尾,否则输出时不会调用文件定位功能。