如何在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 /'等等等等。