Ruby有mkdir -p命令吗?

90

可能是重复问题:
如何在Ruby中递归地创建目录?

在Ruby中,我该怎么做:

mkdir -p cool/beans
  1. 这是我想出来的:

Dir.mkdir('cool') unless File.directory?('cool')
cool_beans_path = File.join('cool', 'beans')
Dir.mkdir(cool_beans_path) unless File.directory?(cool_beans_path)

可是,难道没有更好的方法吗?

  • 我知道我可以这样做:

    system('mkdir', '-p', File.join('cool', 'beans'))
    

    但这并不是跨平台的,对吧?比如说,它在 Mac 上可以工作,但在 Windows 上不行,对吗?

  • 1个回答

    156
    require 'fileutils'
    FileUtils.mkdir_p 'cool/beans'
    

    4
    注意:波浪号不会自动扩展。 - Manav
    13
    文档:FileUtils.mkdir_pFileUtils.mkdir_p方法可以创建一个目录及其所有必要的上级目录。它接收一个字符串路径作为参数,如果目录已存在,则不执行任何操作。例如,使用以下代码可以创建一个名为“/tmp/a/b/c”的目录:require 'fileutils' FileUtils.mkdir_p '/tmp/a/b/c'注意:如果您想要创建文件而不是目录,请使用FileUtils.touch方法。 - Phrogz
    有没有其他方法可以创建递归临时目录,而不是先创建一个tmpdfir,然后在临时目录中执行Dir.mkdir? - theTuxRacer
    1
    据我所知,没有这样的事情。 - Max

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接