Comment supprimer un contenu de répertoire en Java? [dupliquer]
cette question a déjà une réponse ici:
- supprimer les répertoires de façon récursive en Java 23 réponses
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é annuaire.
8 réponses
vous devez faire ceci 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();
}
puis appeler
deleteFolder(outputFolder);
pour supprimer le dossier ayant des fichiers , Pas besoin de boucles ou de recherche récursive. Vous pouvez utiliser directement:
FileUtils.deleteDirectory(<File object of directory>);
cette fonction supprimera le répertoire et tous les fichiers qu'il contient.
Facile à tarte :)
tous les fichiers doivent être supprimés du répertoire avant d'être supprimés.
il y a des bibliothèques tierces qui ont beaucoup d'Utilités communes, y compris celles qui le font pour vous:
Vous ne pouvez pas supprimer sur un tableau ! Cela devrait mieux fonctionner:
for (File f : files) f.delete();
mais ça ne marchera pas si les dossiers ne sont pas vides. Dans ce cas, vous devrez redescendre dans la hiérarchie des dossiers et tout supprimer. Oui, C'est dommage que Java ne puisse pas faire cela par défaut...
vous ne pouvez pas supprimer un tableau File
. Comme toutes les autres réponses suggèrent, vous devez supprimer chaque fichier avant de le supprimer le dossier...
final File[] files = outputFolder.listFiles();
for (File f: files) f.delete();
outputFolder.delete();
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();
}
utiliser des FileUtils avec des FileUtils.deleteDirectory ();
for(File f : files) {
f.delete();
}
files.delete(); // will work