J'essaie de supprimer un répertoire non vide dans Ruby et peu importe la façon dont je le fais, il refuse de fonctionner. J'ai essayé d'utiliser FileUtils, des appels système, récursivement dans le donné répertoire et tout supprimer, mais semblent toujours se retrouver avec des fichiers (temporaires?) tels que
.__ afsECFC
.__ afs73B9
Quelqu'un sait pourquoi cela se produit et comment je peux le contourner?
J'ai réalisé mon erreur, certains fichiers n'avaient pas été fermés. Plus tôt dans mon programme, j'utilisais
File.open(filename).read
que j'ai troqué contre un
f = File.open(filename, "r")
while line = f.gets
puts line
end
f.close
Et maintenant
FileUtils.rm_rf(dirname)
fonctionne parfaitement
require 'fileutils'
FileUtils.rm_rf('directorypath/name')
Ça ne marche pas?
Méthode sûre: FileUtils.remove_dir(somedir)
Je suppose que la meilleure façon de supprimer un répertoire avec tout votre contenu "sans utiliser de bibliothèque supplémentaire" est d'utiliser une méthode récursive simple:
def remove_dir(path)
if File.directory?(path)
Dir.foreach(path) do |file|
if ((file.to_s != ".") and (file.to_s != ".."))
remove_dir("#{path}/#{file}")
end
end
Dir.delete(path)
else
File.delete(path)
end
end
remove_dir(path)