我需要从数据库中读取数据,然后将其保存在文本文件中。
我如何在Ruby中做到这一点?Ruby中有文件管理系统吗?
你在找以下东西吗?
File.open(yourfile, 'w') { |file| file.write("your text") }
Ruby 文件类将为您提供::new和::open的前前后后,但它的父类IO类将进入#read和#write的深度。
::new
::open
#read
#write
在大多数情况下,这是首选的方法:
当一个块被传递给File.open时,文件对象将在块终止时自动关闭。
File.open
如果您没有将块传递给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
你可以在文档中找到它:
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; }
Zambri的答案在这里找到是最好的。
File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }
<OPTION>的选项是:
<OPTION>
r -只读。文件必须存在。
r
w -创建一个空文件用于写入。
w
a -附加到一个文件。如果文件不存在,则创建该文件。
a
r+ -打开文件进行读写更新。文件必须存在。
r+
w+ -创建一个空文件用于读写。
w+
a+ -打开文件进行读取和追加。如果文件不存在,则创建该文件。
a+
在您的情况下,w更可取。
你可以使用简短的版本:
File.write('/path/to/file', 'Some glorious content')
它返回写入的长度;更多细节和选项请参见::写。
如果文件已经存在,使用:
File.write('/path/to/file', 'Some glorious content', mode: 'a')
对于我们这些以身作则的人来说……
像这样写入一个文件:
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
看到:# EYZ0
要销毁文件之前的内容,请向文件中写入一个新字符串:
open('myfile.txt', 'w') { |f| f << "some text or data structures..." }
追加:追加到一个文件而不覆盖其旧内容:
open('myfile.txt', "a") { |f| f << 'I am appended string' }