【问题标题】:Difference between the access modes of the `File` object (ie. w+, r+)`File` 对象访问模式的区别(即 w+, r+)
【发布时间】:2010-12-07 14:09:05
【问题描述】:

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

【问题讨论】:

    标签: ruby file file-io io


    【解决方案1】:

    http://www.tutorialspoint.com/ruby/ruby_input_output.htm

    引用:

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

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

    w
    只写模式。如果文件存在,则覆盖文件。如果文件不存在,则创建一个新文件进行写入。

    w+
    读写模式。 如果文件存在,则覆盖现有文件。如果文件不存在,则新建一个文件进行读写。

    一个
    只写模式。如果文件存在,则文件指针位于文件末尾。也就是说,文件处于附加模式。如果文件不存在,它会创建一个新文件进行写入。

    一个+
    读写模式。 如果文件存在,则文件指针位于文件末尾。该文件以附加模式打开。如果文件不存在,则创建一个新文件进行读写。

    (强调我的。)

    r+、w+ 和 a+ 都可以读写。 w+ 截断文件。 a+ 附加。如果文件不存在,w+ 和 a+ 都会创建该文件。)

    【讨论】:

    • 谢谢,您向我确认了w+ 表示附加的一些误解。
    • @Jonathan Figland 请查看this
    • @Ratatouille 该问题似乎已关闭。那里的 cmets 似乎解决了主要问题。问题解决了吗?
    • @JonathanFingland 是的,问题已解决。我想在这里提到的是ruby documentation seem to agree with the fopen api But fail to obey it. 在a+的情况下
    【解决方案2】:

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

    |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
    

    【讨论】:

    • w+ 和其他符号的“&:read”符号怎么样?
    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

      回答: r+ 和 w+ 我们都可以在文件上读取、写入,但是 r+ 不会截断(删除)文件的内容,如果这样的文件没有退出,它也不会创建新文件,而在 w+ 中也会截断文件的内容如果这样的文件不存在,则创建一个新文件。

      【讨论】:

        猜你喜欢
        • 2017-10-02
        • 2010-11-30
        • 2014-02-02
        • 2021-07-21
        • 2022-12-18
        • 2014-03-28
        • 2012-12-31
        • 1970-01-01
        相关资源
        最近更新 更多