Après avoir énuméré un répertoire, je dois maintenant supprimer tous les fichiers.
J'ai utilisé:
final File[] files = outputFolder.listFiles();
files.delete();
Mais cela n'a pas supprimé le répertoire.
Vous devez le faire pour chaque fichier:
public static void deleteFolder(File folder) {
File[] files = folder.listFiles();
if(files!=null) { //some JVMs return null for empty dirs
for(File f: files) {
if(f.isDirectory()) {
deleteFolder(f);
} else {
f.delete();
}
}
}
folder.delete();
}
Alors appelez
deleteFolder(outputFolder);
Pour supprimer un dossier contenant des fichiers, pas besoin de boucles ni de recherche récursive. Vous pouvez utiliser directement:
FileUtils.deleteDirectory(<File object of directory>);
Cette fonction supprimera le dossier et tous les fichiers qu'il contient.
Tarte facile :)
Tous les fichiers doivent être supprimés du répertoire avant sa suppression.
Certaines bibliothèques tierces ont de nombreux utilitaires communs, y compris ceux qui le font pour vous:
Vous ne pouvez pas supprimer sur un tableau! Cela devrait mieux fonctionner:
for (File f : files) f.delete();
Mais cela ne fonctionnera pas si les dossiers ne sont pas vides. Dans ce cas, vous devrez descendre récursivement dans la hiérarchie des dossiers et tout supprimer. Oui, c'est dommage Java ne peut pas le faire par défaut ...
Voici une solution possible pour résoudre le problème sans bibliothèque:
public static boolean delete(File file) {
File[] flist = null;
if(file == null){
return false;
}
if (file.isFile()) {
return file.delete();
}
if (!file.isDirectory()) {
return false;
}
flist = file.listFiles();
if (flist != null && flist.length > 0) {
for (File f : flist) {
if (!delete(f)) {
return false;
}
}
}
return file.delete();
}
Vous ne pouvez pas supprimer un tableau File
. Comme toutes les autres réponses le suggèrent, vous devez supprimer chaque fichier avant de supprimer le dossier ...
final File[] files = outputFolder.listFiles();
for (File f: files) f.delete();
outputFolder.delete();
Utilisez FileUtils avec FileUtils.deleteDirectory ();
for(File f : files) {
f.delete();
}
files.delete(); // will work