假设我在/source.txt
有一个文件,我想将其复制到/a/b/c.txt
。 <{1}}和/a
可能存在也可能不存在。
有没有办法复制文件并让它在必要时创建必要的父目录?
理想情况下,这将是一个命令。特别是,我想避免解析目标路径的文件/目录部分,然后手动调用/a/b
和FileUtils.mkdir_p
。
纯Ruby是首选,但Rails依赖的解决方案是可以接受的。
答案 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