我需要从数据库中读取数据,然后将其保存在文本文件中。
我如何在Ruby中做到这一点?Ruby中有文件管理系统吗?
我需要从数据库中读取数据,然后将其保存在文本文件中。
我如何在Ruby中做到这一点?Ruby中有文件管理系统吗?
当前回答
Ruby File类会告诉你::new和::open的前前后后,但是它的父类IO类会深入到#read和#write。
其他回答
Zambri的答案是最好的。
File.open("out.txt", '<OPTION>') {|f| f.write("write your stuff here") }
其中您的选项<OPTION>:
r -只读。文件必须存在。
w -创建一个空文件进行写入。
a -附加到文件中。如果文件不存在,则创建该文件。
r+ -打开文件进行读写更新。文件必须存在。
w+ -创建一个空文件用于读和写。
a+ -打开文件进行读取和追加操作。如果文件不存在,则创建该文件。
在你的情况下,w更可取。
在大多数情况下,这是首选的方法:
File.open(yourfile, 'w') { |file| file.write("your text") }
当块被传递给File时。打开时,文件对象将在块终止时自动关闭。
如果您没有将块传递给File。打开时,您必须确保文件被正确关闭,并且内容已写入文件。
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;
}
要销毁文件之前的内容,请向文件中写入一个新字符串:
open('myfile.txt', 'w') { |f| f << "some text or data structures..." }
追加:追加到一个文件而不覆盖其旧内容:
open('myfile.txt', "a") { |f| f << 'I am appended string' }
Ruby File类会告诉你::new和::open的前前后后,但是它的父类IO类会深入到#read和#write。
你在找以下东西吗?
File.open(yourfile, 'w') { |file| file.write("your text") }