2011-02-16 85 views
37

假设我有一个文件在/source.txt,我想将其复制到/a/b/c.txt/a/a/b可能存在也可能不存在。复制文件,根据需要在Ruby中创建目录

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

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

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

+1

您为什么想要在一个命令中执行该操作?大多数文件系统都是这样工作的。您需要一个目录,然后才能将文件放入其中。 2或3个电话有什么问题? – xinit 2011-02-16 18:57:23

回答

83

通常,您需要确保目标目录路径存在,因此我怀疑任何内置命令是否会执行您要查找的内容。

但是使用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 
相关问题