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

Cra*_*ker 39 ruby

假设我有一个文件/source.txt,我想将其复制到/a/b/c.txt./a并且/a/b可以或可以不存在.

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

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

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

mae*_*ics 85

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

但是使用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
Run Code Online (Sandbox Code Playgroud)