【问题标题】:FileUtils public class method to rename an existed file when copying复制时重命名现有文件的 FileUtils 公共类方法
【发布时间】:2013-05-29 10:23:53
【问题描述】:

FileUtils 类(Ruby StdLib)上,在FileUtils.cpFileUtils.cp_rFileUtils.mv 等类方法中,当目标文件存在时,没有提供文件的可选重命名。 我想利用FileUtils.cp_r 方法并对FileUtils 进行一些更改以支持这种行为。

这是一个好方法,还是我应该实现自己的FileUtils.cp_r

更新: 我检查了FileUtils.cp_r 的Rubinius 源代码,发现它调用了FileUtils.copy_entry。我发现重新定义库方法可能容易出错。所以我选择实现一个自定义的递归复制方法(这将重命名一个存在的文件)。

【问题讨论】:

  • 可以使用Dir::glob遍历目录树。
  • Metaprogramming 是一个口语化术语,而且重命名文件与它是正交的。

标签: ruby standard-library


【解决方案1】:

在 irb 中试试这个

f = File.open('test.rb', 'w+')
  => #<File:test.rb>
irb(main):002:0> File.rename(f, "temp.rb")
  => 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    相关资源
    最近更新 更多