我是Ruby的新手,我正在研究一些katas,我坚持这个愚蠢的问题。我需要将1个文件的内容复制到1行代码中的新文件
首先尝试:
File.open(out, 'w').write(File.open(in).read)
很好,但我需要关闭文件:
File.open(out, 'w') { |outf| outf.write(File.open(in).read) }
然后关闭阅读:
File.open(out, 'w') { |outf| File.open(in) { |inf| outf.write(outf.read)) } }
这就是我想出来的,但它对我来说看起来不像一行代码:(
想法?
问候,
答案 0 :(得分:25)
Ruby 1.9.3及更高版本有一个
File.write(name, string, [offset], open_args)
命令,允许您直接写入文件。 name
是文件的名称,string
是您想要写的,其他参数在我的头上。
它的一些链接:https://github.com/ruby/ruby/blob/ruby_1_9_3/NEWS,http://bugs.ruby-lang.org/issues/1081(滚动到底部)。
答案 1 :(得分:14)
有很多方法。您可以简单地调用命令行,例如:
`cp path1 path2`
但我想你正在寻找类似的东西:
File.open('foo.txt', 'w') { |f| f.write(File.read('bar.txt')) }
答案 2 :(得分:2)
您可以执行以下操作:
File.open(out_file, "w") {|f| f.write IO.read(in_file)}
答案 3 :(得分:1)
您可以尝试:
IO.binwrite('to-filename', IO.binread('from-filename'))
检查ruby文档:
IO::binwrite& IO::binread