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.

67
demandé sur Tshepang 2011-10-14 17:08:57

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);
106
répondu NCode 2011-10-14 13:49:43

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 :)

78
répondu dhroove 2011-12-26 04:24:08

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:

10
répondu Bozho 2011-10-14 13:12:26

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...

7
répondu solendil 2011-10-14 13:12:15

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();
4
répondu fireshadow52 2011-10-14 13:16:46

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();
}
4
répondu user2546090 2015-04-16 16:49:50

utiliser des FileUtils avec des FileUtils.deleteDirectory ();

2
répondu Dellanio 2013-01-31 14:42:16
for(File f : files) {
    f.delete();
}    
files.delete(); // will work
1
répondu Vaandu 2011-10-14 13:13:42