【问题标题】:Ruby read/write to file in 1 line of codeRuby 在 1 行代码中读/写文件
【发布时间】:2011-09-18 20:10:03
【问题描述】:

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

这是我想出的,但对我来说它不像 1 行代码:(

想法?

问候,

【问题讨论】:

  • FileUtils、File.copy 算不算?
  • 我没有看到任何换行符或分号.....
  • @matt 我知道,但如果我必须对自己正确,我将不得不在那里放一些换行符

标签: ruby code-golf


【解决方案1】:

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(滚动到底部)。

【讨论】:

    【解决方案2】:

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

    `cp path1 path2`
    

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

    File.open('foo.txt', 'w') { |f| f.write(File.read('bar.txt')) }
    

    【讨论】:

    【解决方案3】:

    您可以执行以下操作:

    File.open(out_file, "w") {|f| f.write IO.read(in_file)}
    

    【讨论】:

      【解决方案4】:

      你可以试试:

      IO.binwrite('to-filename', IO.binread('from-filename'))
      

      查看 ruby​​ 文档:

      IO::binwrite & IO::binread

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多