如何在Ruby中写入文件?

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

我怎么能在Ruby中做到这一点? Ruby中有没有文件pipe理系统?

Ruby File类会给你::new::open和输出,但是它的父类IO类进入#read#write的深度。

你在找什么?

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

你可以使用短版本:

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

它返回写入的长度; 看到::写更多的细节和选项。

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

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

当一个块被传递给File.open ,File对象将在块终止时自动closures。

如果您没有将一个块传递给File.open ,则必须确保该文件已正确closures,并且内容已写入文件。

 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 

你可以在文档中find它:

 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; } 

赞比里 在这里find的答案是最好的。

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

您的<OPTION>是:

r – 只读。 该文件必须存在。

w – 创build一个空文件进行写入。

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

r+ – 打开文件进行更新读写。 该文件必须存在。

w+ – 为读写创build一个空文件。

a+ – 打开文件进行阅读和追加。 如果该文件不存在,则会创build该文件。

在你的情况下, w是可取的。

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

写文本到这样的文件:

 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

要销毁文件的以前的内容,然后写一个新的string到文件:

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

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

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