首页 文章

如何在Ruby中写入文件?

提问于
浏览
499

我需要从数据库中读取数据,然后将其保存在文本文件中 .

我怎么能在Ruby中做到这一点? Ruby中有任何文件管理系统吗?

7 回答

  • 110

    您可以使用简短版本:

    File.write('/path/to/file', 'Some glorious content')
    

    它返回写入的长度;有关详细信息和选项,请参阅::write .

    要附加到文件,如果它已经存在,请使用:

    File.write('/path/to/file', 'Some glorious content', mode: 'a')
    
  • 30

    在大多数情况下,这是首选方法:

    File.open(yourfile, 'w') { |file| file.write("your text") }
    

    当块传递给 File.open 时,当块终止时,File对象将自动关闭 .

    如果未将块传递给 File.open ,则必须确保文件已正确关闭且内容已写入文件 .

    begin
      file = File.open("/tmp/some_file", "w")
      file.write("your text") 
    rescue IOError => e
      #some error occur, dir not writable etc.
    ensure
      file.close unless file.nil?
    end
    

    你可以在documentation找到它:

    static VALUE rb_io_s_open(int argc, VALUE *argv, VALUE klass)
    {
        VALUE io = rb_class_new_instance(argc, argv, klass);
        if (rb_block_given_p()) {
            return rb_ensure(rb_yield, io, io_close, io);
        }
        return io;
    }
    
  • 165

    对于我们这些通过实例学习的人......

    将文本写入文件,如下所示:

    IO.write('/tmp/msg.txt', 'hi')
    

    奖金信息......

    像这样读回来

    IO.read('/tmp/msg.txt')
    

    通常,我想将文件读入我的剪贴板***

    Clipboard.copy IO.read('/tmp/msg.txt')
    

    有时,我想把剪贴板中的内容写成文件***

    IO.write('/tmp/msg.txt', Clipboard.paste)
    

    ***假设您已安装剪贴板gem

    见:https://rubygems.org/gems/clipboard

  • 534

    Zambri的回答found here是最好的 .

    File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }
    

    您对 <OPTION> 的选项是:

    r - 只读 . 该文件必须存在 .

    w - 创建一个用于写入的空文件 .

    a - 附加到文件 . 如果文件不存在,则创建该文件 .

    r+ - 打开文件以进行更新读取和写入 . 该文件必须存在 .

    w+ - 为读取和写入创建一个空文件 .

    a+ - 打开文件进行阅读和追加 . 如果文件不存在,则创建该文件 .

    在您的情况下, w 是更可取的 .

  • 234

    Ruby File class将为您提供 ::new::open 的详细信息,但其父级IO class深入 #read#write .

  • 17

    要销毁文件的先前内容,请将新字符串写入文件:

    open('myfile.txt', 'w') { |f| f << "some text or data structures..." }
    

    要附加到文件而不覆盖其旧内容:

    open('myfile.txt', "a") { |f| f << 'I am appended string' }
    
  • 839

    你在寻找以下?

    File.open(yourfile, 'w') { |file| file.write("your text") }
    

相关问题