如果使用Ruby中的File类不存在,如何创建目录?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

我有一项声明:

File.open(some_path, 'w+') { |f| f.write(builder.to_html)  }

some_path = "somedir/some_subdir/some-file.html"

我想要的是,如果没有一个名为somedirsome_subdir或者在路径中,我希望它能够自动地创建它。

我该怎么做?

提问于
用户回答回答于

如果父目录尚未出现,则可以使用FileUtils递归创建父目录:

require 'fileutils'

dirname = File.dirname(some_path)
unless File.directory?(dirname)
  FileUtils.mkdir_p(dirname)
end

编辑:这里有一个仅使用核心库的解决方案(要造轮子,不建议)

dirname = File.dirname(some_path)
tokens = dirname.split(/[\/\\]/) # don't forget the backslash for Windows! And to escape both "\" and "/"

1.upto(tokens.size) do |n|
  dir = tokens[0...n]
  Dir.mkdir(dir) unless Dir.exist?(dir)
end
用户回答回答于

对于那些寻找创建目录的方式(如果它不存在的话),下面是简单的解决方案:

require 'fileutils'

FileUtils.mkdir_p 'dir_name'

扫码关注云+社区