Comment savoir pourquoi une suppression de fichier échoue en Java?
File file = new File(path);
if (!file.delete())
{
throw new IOException(
"Failed to delete the file because: " +
getReasonForFileDeletionFailureInPlainEnglish(file));
}
Est-il une bonne mise en œuvre de getReasonForFileDeletionFailureInPlainEnglish(file)
déjà là? Sinon, je vais juste avoir à l'écrire moi-même.
Vous devez vous connecter pour publier un commentaire.
Dans la version 6 de Java, il n'y a malheureusement aucun moyen de déterminer pourquoi un fichier ne peut pas être supprimé. Avec Java 7, vous pouvez utiliser
java.nio.file.Path#delete()
au lieu de cela, qui vous informera de la cause de l'échec, si le fichier ou le répertoire ne peut pas être supprimé.Noter que les fichiers.liste() peut retourner les entrées de répertoires, ce qui peut être supprimé. La documentation de l'API pour les supprimer a dit que seuls les répertoires vides peuvent être supprimés, mais un répertoire est considéré comme vide, si les fichiers qu'il contient sont par exemple le système d'exploitation des métadonnées des fichiers.
Hmm, je pouvais faire de mieux:
Être conscient qu'il peut être votre propre application qui empêche un fichier sera supprimé!
Si vous avez écrit dans le fichier précédemment et n'a pas fermé l'écrivain, vous verrouillez le fichier vous-même.
Java 7 java.nio.fichier.Fichiers classe peut également être utilisé:
http://docs.oracle.com/javase/tutorial/essential/io/delete.html
Une délétion peut échouer à cause d'un ou plusieurs raisons:
File#exists()
à tester).Donc à chaque fois que la suppression échoue, procédez de l'une
File#exists()
pour vérifier si elle est causée par 1) ou 2).Résumé:
SecurityException
. @Thilo: je n'ai pas dit quoi que ce soit sur les autorisations de système de fichiers. Juste au sujet de l'échec de l'autorisation à n'importe quel niveau.Comme l'a souligné dans Fichier.delete()
vous pouvez utiliser un SecurityManager qui lève l'exeception pour vous.