2017-01-16 2 views
4

J'ai un problème lors de la suppression de fichiers du répertoire img en utilisant org.apache.commons.io.FileUtils. J'utilise ce code:Comment supprimer un fichier correctement?

File dir = new File(".\\img"); 
    FileFilter fileFilter = new WildcardFileFilter(userId + ".*"); 
    File[] files = dir.listFiles(fileFilter); 
    System.out.println("files found: " + files.length); 
    for (int i = 0; i < files.length; i++) { 
     boolean success = FileUtils.deleteQuietly(files[i]); 
     System.out.println(files[i] + " delete result = " + success); 
    } 
} 

En fait, le code est utilisé pour remplacer les fichiers image qui existaient dans le répertoire img avec le nouveau. J'ai besoin de supprimer tous les fichiers précédemment existants dont les noms sont n. *, Avec le nouveau fichier par exemple. n.png. Si j'essaye de supprimer des fichiers d'image, j'obtiens une fausse valeur pour le succès de la variable et les fichiers ne sont pas supprimés. Mais pas les fichiers image, par exemple. *.abc; * .acd; * .acdc etc. sont supprimés avec succès. Quel est le cas de ce problème?

+2

Il y a un support de fermeture à la fin sans support d'ouverture correspondant, et l'indentation est bizarre. Y a-t-il une instruction if manquante dans le code? –

+0

Pourriez-vous fournir un échantillon de la sortie? – phss

+4

Pourquoi ne pas essayer d'appeler 'fichiers [i] .delete()', et voir quelle exception est levée. –

Répondre

1

Essayez ceci:

java.nio.file.Files.delete(files[i].toPath()); 

Et voir ce que exception sera levée.

0

Le problème était que les fichiers destinés à être supprimés étaient utilisés comme flux d'entrée dans une autre partie du code et que ce flux d'entrée n'était pas fermé. Les fichiers n'ont donc pas pu être supprimés.