Les problèmes de la suppression d'un fichier avec Java (apache commons io)
J'appelle un C++ Méthode via JNI qui crée deux fichiers. Un fichier journal texte et un fichier pdf dans un répertoire donné. Je veux supprimer ces fichiers (si elles existent) avant l'exécution de la JNI méthode.
Je suis à l'aide d'Apache commons.io (FileUtils.forceDelete(Fichier)). Quand j'execute-je obtenir une IOException:
java.io.IOException: Unable to delete file: D:\Folder\file.log
- Je vérifier l'écriture de l'état du fichier avant de fireing la méthode delete avec le Fichier.canWrite() la méthode. Elle renvoie true pour le fichier et le parent dir.
Avez-vous une idée de pourquoi j'ai des problèmes de supprimer le fichier? Aussi loin que je connais le C++, une méthode de création des fichiers est en cours de fermeture ou déverrouillage d'après la méthode de finitions. De toute façon, je n'ai pas accès au code source du code C++ donc je ne peux pas vérifier si c'est vraiment le cas ou modifier le code.
Merci, Marco
Selon Apache SVN la méthode delete() sur l'objet de Fichier est appelée avant que l'exception se produit. Ce qui signifie que le fichier spécifié n'a pas pu être supprimé comme demandé. J'imagine, qu'un verrou est toujours présent sur le fichier.
Une idée de comment puis-je supprimer le verrou?
Sans connaissance du code de produire les fichiers qu'il est très difficile de présenter une solution. Selon les modes qui ont été utilisés en créant les fichiers que vous pourriez les laisser seuls et la méthode est de remplacer les fichiers lui-même. Une autre source pourrait être l'utilisation d'un IDE pour exécuter l'application. Parfois IDE de verrouillage des fichiers, même s'ils n'ont rien à faire avec elle. Si possible, vous pouvez également essayer de supprimer tout le répertoire, mais que peut produire le même résultat que la suppression de ces fichiers.
OriginalL'auteur | 2011-05-12
Vous devez vous connecter pour publier un commentaire.
Il est presque certainement verrouillé par un autre processus. Si c'est un autre processus de verrouillage au niveau de l'OS (dire que vous avez le fichier ouvrir un éditeur de texte), alors vous n'aurez pas beaucoup de chance. Même explorateur de windows peut ne parviennent pas à supprimer un fichier si quelque chose est de le verrouiller. Cependant, avoir un regard sur
java.nio.les canaux.FileLock
pour les appels de l'API.OriginalL'auteur Nick Fortescue
Le plus probable, un autre processus est en gardant
file.log
ouvert, ce qui pourrait l'empêcher d'être supprimé.OriginalL'auteur Tony the Pony
Je suis sous Eclipse 4.x et jre 1.7, webapp déployés pour tomcat7.
J'ai le même problème de la tentative de suppression de fichiers à partir de mon ressort du contrôleur.
Il ne fonctionne pas à partir à l'intérieur de la webapp. Mais... il travaille dans une application java autonome, courir à partir de la même IDE.
Peut-être Tomcat est le verrouillage du dossier, puisque je n'ai pas lu plus tôt(mais seulement par l'instanciation de Fichier() de la classe). Je ne suis pas explicitement à l'aide de flux.
J'ai aussi essayé d'utiliser communes.io bibliothèque de FileUtils.forceDelete(f), mais aucune n'a eu la joie.
OriginalL'auteur Jim