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

时间:2011-09-18 20:10:03

标签: ruby code-golf

我是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)) } }

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

想法?

问候,

4 个答案:

答案 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/NEWShttp://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