2010-09-10 6 views

Répondre

164

Utilisation mkdir_p:

FileUtils.mkdir_p '/a/b/c' 

Le _p est une durée d'efficacité unix pour chemin/parent, vous pouvez également utiliser l'alias mkpath si cela fait plus de sens pour vous.

FileUtils.mkpath '/a/b/c' 

En Ruby 1.9 FileUtils a été retiré du noyau, de sorte que vous aurez à require 'fileutils'.

+9

+1. 'FileUtils' et' Pathname' sont probablement les outils les plus importants pour les scripts shell Ruby. –

3
require 'ftools' 

File.makedirs

+1

Merci pour le pointeur! Les docs semblent préférer FileUtils.mkdir_p, donc j'ai pris ça ... – Jan

7

Si vous utilisez des machines Unixy, n'oubliez pas que vous pouvez toujours exécuter une commande shell sous ruby ​​en la plaçant en arrière.

`mkdir -p /a/b/c` 
+1

Donner une ligne de commande pour une fonction que vous pouvez faire avec une fonction intégrée n'est pas bon –

+0

Etre si positif est cependant. –

16

utilisateur mkdir_p pour créer le répertoire récursive

path = "/tmp/a/b/c" 

FileUtils.mkdir_p(path) unless File.exists?(path) 
0

Vous pouvez également utiliser votre propre logique

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 

Donc, si le chemin est 'tmp/a/b/c' si ' tmp 'n'existe pas' tmp 'est créé, puis' tmp/a/'et ainsi de suite.

Questions connexes