如何在ruby中recursion创build目录?

我想将文件存储为/a/b/c/d.txt,但是我不知道这些目录是否存在,如果需要的话,需要recursion创build它们。 一个人如何做到这一点在ruby?

使用mkdir_p

 FileUtils.mkdir_p '/a/b/c' 

_p是父/path的unix保留,如果这对您更有意义,您也可以使用别名mkpath

 FileUtils.mkpath '/a/b/c' 

在Ruby 1.9中,FileUtils已经从核心中移除了,所以你必须require 'fileutils'

用户mkdir_p以recursion方式创build目录

 path = "/tmp/a/b/c" FileUtils.mkdir_p(path) unless File.exists?(path) 

如果你在unixy机器上运行,不要忘记你总是可以在ruby下运行一个shell命令。

 `mkdir -p /a/b/c` 
  require 'ftools' 

File.makedirs

你也可以使用你自己的逻辑

 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 

所以如果path是'tmp / a / b / c',如果'tmp'不存在'tmp'被创build,那么'tmp / a /'等等等等。