Ruby在1行代码中读/写文件

Cal*_*lin 10 ruby code-golf

我是Ruby的新手,我正在研究一些katas,我坚持这个愚蠢的问题.我需要将1个文件的内容复制到1行代码中的新文件中

第一次尝试:

File.open(out, 'w').write(File.open(in).read)
Run Code Online (Sandbox Code Playgroud)

很好,但是我需要关闭文件:

File.open(out, 'w') { |outf| outf.write(File.open(in).read) }
Run Code Online (Sandbox Code Playgroud)

然后关闭阅读:

File.open(out, 'w') { |outf| File.open(in) { |inf| outf.write(outf.read)) } }
Run Code Online (Sandbox Code Playgroud)

这是我想出来的,但它看起来不像我的一行代码:(

想法?

问候,

And*_*imm 26

Ruby 1.9.3及更高版本有一个

File.write(name, string, [offset], open_args)
Run Code Online (Sandbox Code Playgroud)

允许您直接写入文件的命令.name是文件的名称,string是你想要写的,其他参数在我头上.

一些链接:https://github.com/ruby/ruby/blob/ruby_1_9_3/NEWS,http://bugs.ruby-lang.org/issues/1081(滚动到底部).


Osc*_*Ben 14

有很多方法.您可以简单地调用命令行,例如:

`cp path1 path2`
Run Code Online (Sandbox Code Playgroud)

但我想你正在寻找类似的东西:

File.open('foo.txt', 'w') { |f| f.write(File.read('bar.txt')) }
Run Code Online (Sandbox Code Playgroud)