Y a-t-il un moyen de supprimer toute dossiers récursivement en Java ? Dans le cas normal, il est possible de supprimer un répertoire vide. Cependant quand il s’agit de la suppression des dossiers complets avec du contenu, il n’est pas aussi simple que cela plus. Comment supprimer des dossiers complets avec du contenu en Java ?
Réponses
Trop de publicités?Vous devriez vérifier commons-io d’Apache. Il a une classe de FileUtils qui va faire ce que vous voulez.
Avec Java 7, nous pouvons enfin faire avec détection fiable symlink. (Je ne considère pas commons-io d’Apache d’avoir la détection fiable de lien symbolique pour l’instant, car il ne gère pas les liens sur les fenêtres créées avec `` .)
Dans un souci de l’histoire, voici un pré Java 7 répondre, dont suit les liens symboliques.
Support de Java 7 ajouté pour la marche des répertoires avec manipulation de lien symbolique :
J’utilise cela comme un secours de méthodes spécifiques à la plateforme (dans le présent code non testé ) :
(SystemUtils provient d’Apache Commons Lang. Processus est privé, mais son comportement devrait être évident.)
Une solution avec une pile et sans méthodes récursives:
File dir = new File("/path/to/dir");
File[] currList;
Stack<File> stack = new Stack<File>();
stack.push(dir);
while (! stack.isEmpty()) {
if (stack.lastElement().isDirectory()) {
currList = stack.lastElement().listFiles();
if (currList.length > 0) {
for (File curr: currList) {
stack.push(curr);
}
} else {
stack.pop().delete();
}
} else {
stack.pop().delete();
}
}