Copy a file, creating directories as necessary in Ruby
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
精彩评论