39 votes

Copier un fichier, en créant des répertoires si nécessaire en Ruby

Disons que j'ai un fichier à /source.txt et je veux le copier dans /a/b/c.txt . /a y /a/b peut ou ne peut pas exister.

Existe-t-il un moyen de copier le fichier et de faire en sorte qu'il crée les répertoires parents nécessaires, le cas échéant ?

Idéalement, il s'agirait d'une seule commande. En particulier, j'aimerais éviter d'analyser les parties fichier/répertoire du chemin de destination et d'appeler manuellement la commande FileUtils.mkdir_p y FileUtils.cp .

Une solution purement Ruby est préférable, mais une solution dépendant de Rails est acceptable.

85voto

maerics Points 47743

En général, c'est à vous de vous assurer que le chemin du répertoire cible existe, donc je doute qu'une commande intégrée fasse ce que vous recherchez.

Mais en utilisant FileUtils.mkdir_p(dir) pourrait être très simple, notamment en utilisant File.dirname() pour analyser le chemin. Vous pourriez même l'envelopper dans une routine utilitaire, par exemple :

require 'fileutils'

def copy_with_path(src, dst)
  FileUtils.mkdir_p(File.dirname(dst))
  FileUtils.cp(src, dst)
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X