如何在Ruby中写入文件?

How to write to file in Ruby?

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

我怎么能用红宝石做那个?Ruby中有文件管理系统吗?


您要查找以下内容吗?

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


您可以使用短版本:

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

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

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

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


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

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

当一个块传递给File.open时,当该块终止时,文件对象将自动关闭。

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

1
2
3
4
5
6
7
8
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

您可以在文档中找到它:

1
2
3
4
5
6
7
8
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;
}


Ruby文件类将为您提供::new::open的输入和输出,但它的父类IO类深入到#read#write的深度。


赞比里的回答是最好的。

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

如果您对的选择是:

r—只读。文件必须存在。

w—创建一个空文件进行写入。

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

r+—打开一个文件进行读写更新。文件必须存在。

w+—创建一个空文件,用于读写。

a+—打开一个文件进行读取和附加。如果文件不存在,则创建该文件。

在您的情况下,最好是w


对于我们这些以身作则的人…

将文本写入这样的文件:

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

奖金信息…

像这样读回

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

我经常想把一个文件读到我的剪贴板上。

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

有时,我想把剪贴板上的内容写到一个文件中。

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

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

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


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

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

要附加到文件而不覆盖其旧内容,请执行以下操作:

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