假设我有一个/source.txt的文件,我想把它复制到/a/b/c.txt./a/a/b可能存在,也可能不存在.

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

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

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

推荐答案

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

但是使用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

Ruby相关问答推荐

为什么非数字在Ruby中被转换为integer?

R10K模块在try 安装gem r10k时获得错误的Ruby版本

如何使用 HEREDOC 作为参数传递给方法?

Ruby 按变量条件划分数组数组

查看 Savon 请求 XML 而不发送到服务器

Ruby 符号到类

define_method:如何动态创建带参数的方法

是否有Ruby单行如果 x 则返回?

方法如何在 Ruby 中使用哈希参数?

如何用 Ruby 覆盖 shell 中的打印行?

Ruby 中的排序稳定吗?

在 Ruby 中重写 to_s 方法不好吗?

在命名包含多个单词的Ruby 时,是否应该使用破折号或下划线?

Xcode - 配置:错误:在 $PATH 中找不到可接受的 C 编译器

判断整数是否在范围内

Ruby 哈希白名单过滤器

Ruby:define_method 与 def

使用哈希值呈现 ERB 模板

Ruby 疯狂:类与对象?

常见的 Ruby 习语