Lorsque j'essaie de supprimer un fichier du code Java présent dans le serveur Tomcat conf/Catalina/localhost, alors file.delete () renvoie toujours false. Mais si je vérifie le fichier par la fonction file.exists (), il retourne vrai. Je ne reçois aucune exception. S'il vous plaît aidez-nous pourquoi cela se produit. Quelle est la solution pour cela?
Lorsque j'essaie de supprimer un fichier présent sur le serveur Tomcat conf/Catalina/localhost à partir du code Java, puis file.delete () toujours renvoie faux. Mais si je vérifie le fichier par la fonction file.exists () ça retourne vrai.
Très probablement, vous n'avez pas permission pour supprimer des fichiers sur le serveur. Vérifiez vos autorisations.
f.delete()
renvoie false, cela signifie qu'il n'a pas été/ne peut pas être supprimé et f.exists()
renvoie true. Le fichier existe mais ne peut pas être supprimé.
Il existe un certain nombre de raisons pour lesquelles un fichier ne peut pas être supprimé; il peut ne pas exister, il peut s'agir d'un répertoire non vide, vous n'avez peut-être pas fermé toutes les ressources qui l'utilisent et votre programme n'est peut-être pas autorisé à le faire, pour n'en nommer que quelques-unes.
Malheureusement, la méthode File.delete()
fournit très peu d’informations sur les raisons; c'est à vous de chercher et de comprendre. Mais il y a de bonnes nouvelles. vous ne voulez pas utiliser File
en premier lieu.
Java 7 a introduit le nouveau paquet Java.nio.file
qui est une API d'accès aux fichiers beaucoup plus robuste. Il fournit le concept abstrait Path
et sépare les opérations concrètes dans la classe Files
, en particulier il fournit Files.delete()
qui est documenté pour générer des exceptions claires décrivant les raisons pour lesquelles la suppression peut échouer.
Utilisez Path
et Files
; vous serez content de l'avoir fait.
Vous devez fermer le flux avant de le supprimer.
par exemple -
fileInputStream.close();
file.delete();
Si le répertoire n'est pas vide, la méthode File.delete()
renverra false sans générer d'erreur.
Vous devez nettoyer le répertoire avant de le supprimer.
Cela signifie que le fichier existe déjà, mais que votre processus Java n’a pas l’autorisation de le supprimer. C’est pourquoi la fonction delete renvoie false
Returns:
true if and only if the file or directory is successfully deleted; false otherwise