2012-07-13 38 views
49

thể trùng lặp:
How to create directories recursively in ruby?Ruby có mkdir -p không?

Trong Ruby, làm thế nào tôi có thể làm:

mkdir -p cool/beans 
  1. Đây là những gì tôi đã đưa ra:

    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) 
    

    Nhưng, không có cách nào tốt hơn?

  2. Tôi biết tôi có thể làm:

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

    Nhưng, đó không phải là nền tảng độc lập, phải không? Giống như, nó hoạt động trên Mac nhưng không phải trên Windows, phải không?

Trả lời

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

Lưu ý: Tilda không tự động được mở rộng. – Manav

+6

Tài liệu: ['FileUtils.mkdir_p'] (http://www.ruby-doc.org/stdlib-2.1.1/libdoc/fileutils/rdoc/FileUtils.html#method-c-mkdir_p) – Phrogz

+0

Có cách nào không để tạo một thư mục tạm thời đệ quy, khác với lần đầu tiên tạo một tmpdfir và sau đó thực hiện một Dir.mkdir bên trong thư mục tạm thời? – theTuxRacer