【发布时间】:2011-04-10 19:19:31
【问题描述】:
我想将文件存储为 /a/b/c/d.txt,但我不知道这些目录是否存在,如果需要,需要递归创建它们。 如何在 ruby 中做到这一点?
【问题讨论】:
标签: ruby
我想将文件存储为 /a/b/c/d.txt,但我不知道这些目录是否存在,如果需要,需要递归创建它们。 如何在 ruby 中做到这一点?
【问题讨论】:
标签: ruby
使用 mkdir_p 递归创建目录
path = "/tmp/a/b/c"
FileUtils.mkdir_p(path) unless File.exists?(path)
【讨论】:
Pathname 来救援!
Pathname('/a/b/c/d.txt').dirname.mkpath
【讨论】:
FileUtils.mkdir_p '/a/b/c' + 创建d.txt?
Pathname('/a/b/c/d.txt').dirname.mkpath 和 File.write('/a/b/c/d.txt', content) 没有 filename = '/a/b/c/d.txt'.rpartition('/').last 和其余的解析
你也可以使用你自己的逻辑
def self.create_dir_if_not_exists(path)
recursive = path.split('/')
directory = ''
recursive.each do |sub_directory|
directory += sub_directory + '/'
Dir.mkdir(directory) unless (File.directory? directory)
end
end
所以如果路径是 'tmp/a/b/c' 如果 'tmp' 不存在,则创建 'tmp',然后创建 'tmp/a/' 等等。
【讨论】:
如果您在 unixy 机器上运行,请不要忘记您始终可以在 ruby 下运行 shell 命令,方法是将其放在反引号中。
`mkdir -p /a/b/c`
【讨论】:
require 'ftools'
【讨论】:
mkdir_p 和mkpath ruby-doc.org/stdlib-2.6.5/libdoc/fileutils/rdoc/… 的别名