2012-07-13 30 views
49

可能重複:
How to create directories recursively in ruby?Ruby是否有mkdir -p?

在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) 
    

    但是,沒有更好的方法嗎?

  2. 我知道我可以做的:

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

    但是,這不是平臺獨立的,是嗎?就像,它適用於Mac,但不適用於Windows,對吧?

回答

96
require 'fileutils' 
FileUtils.mkdir_p 'cool/beans' 
+3

注:蒂爾達不會自動展開。 – Manav 2014-02-24 15:25:37

+6

文檔:['FileUtils.mkdir_p'](http://www.ruby-doc.org/stdlib-2.1.1/libdoc/fileutils/rdoc/FileUtils.html#method-c-mkdir_p) – Phrogz 2014-04-13 01:53:54

+0

有沒有辦法做一個遞歸的臨時目錄,除了首先創建一個tmpdfir,然後在臨時目錄中做一個Dir.mkdir? – theTuxRacer 2016-11-22 11:40:10