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

Êtes-vous sûr que le fichier n'est pas utilisé par un autre processus? Essayez de renommer manuellement/supprimer ce fichier.
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