开发者

Copy a file, creating directories as necessary in Ruby

开发者 https://www.devze.com 2023-02-10 17:36 出处:网络
Let\'s say I have a file at /source.txt, and I want to copy it to /a/b/c.txt. /a and /a/b may or may not exist.

Let's say I have a file at /source.txt, and I want to copy it to /a/b/c.txt. /a and /a/b may or may not exist.

Is there a way to copy the file and have it create the necessary parent directories if 开发者_开发知识库necessary?

Ideally this would be one command. In particular, I'd like to avoid parsing the file/directory parts of destination path and then manually calling FileUtils.mkdir_p and FileUtils.cp.

Pure Ruby is preferred, though a Rails-dependent solution is acceptable.


Typically it's up to you to make sure that the target directory path exists, so I doubt if any built-in command does what you're looking for.

But using FileUtils.mkdir_p(dir) could be very straightforward, especially by using File.dirname() to parse the path. You could even wrap it in a utility routine, e.g.:

require 'fileutils'

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

精彩评论

暂无评论...
验证码 换一张
取 消