复制文件,在Ruby中根据需要创建目录

时间:2011-02-16 18:46:00

标签: ruby

假设我在/source.txt有一个文件,我想将其复制到/a/b/c.txt。 <{1}}和/a可能存在也可能不存在。

有没有办法复制文件并让它在必要时创建必要的父目录?

理想情况下,这将是一个命令。特别是,我想避免解析目标路径的文件/目录部分,然后手动调用/a/bFileUtils.mkdir_p

纯Ruby是首选,但Rails依赖的解决方案是可以接受的。

1 个答案:

答案 0 :(得分:84)

通常由您来确保目标目录路径存在,因此我怀疑是否有任何内置命令可以满足您的需求。

但使用FileUtils.mkdir_p(dir)可能非常简单,尤其是使用File.dirname()来解析路径。您甚至可以将其包装在实用程序例程中,例如:

require 'fileutils'

def copy_with_path(src, dst)
  FileUtils.mkdir_p(File.dirname(dst))
  FileUtils.cp(src, dst)
end