java.nio.fichier.AccessDeniedException tout en utilisant des Fichiers.move()
Je suis en train de faire un java.nio.file.Files.move(path, path.resolveSibling("newfilename"))
pour renommer un répertoire sur windows 7.
Mais je suis de l'exception suivante:
java.nio.file.AccessDeniedException: oldfilename -> newfilename
at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:83)
at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97)
at sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:387)
at sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
at java.nio.file.Files.move(Files.java:1345)
Quelle en est la cause? Je suis à l'aide de Java 7.
Le chemin d'accès cible n'existe pas avant l'invocation de Files.move()
.
Mise à JOUR
When moving a directory requires that its entries be moved then this method fails
(by throwing an IOException).
Mon répertoire n'est pas vide et contient des fichiers ordinaires, peut-être que c'est la raison pour laquelle il ne peut être utilisé ici? Je vais avoir des problèmes pour la compréhension de la "exige que ses entrées déplacer" libellé. Quand est-ce le cas?
Ne pouvez pas l'UAC en être la raison?
Malheureusement pas.
J'ai dû remplacer la propriété de tous les dossiers concernés (même si l'explorateur avait pas de problème de déplacer les fichiers). Ancien "propriétaire" a été une longue SID commençant par S-1-5-21-. C'est bizarre que lorsque l'utilisateur a l'autorisation, une application java a commencé par l'utilisateur n'.
C'est ce qui m'a aidé: stackoverflow.com/a/28673369/1317559
Malheureusement pas.
J'ai dû remplacer la propriété de tous les dossiers concernés (même si l'explorateur avait pas de problème de déplacer les fichiers). Ancien "propriétaire" a été une longue SID commençant par S-1-5-21-. C'est bizarre que lorsque l'utilisateur a l'autorisation, une application java a commencé par l'utilisateur n'.
C'est ce qui m'a aidé: stackoverflow.com/a/28673369/1317559
OriginalL'auteur MRalwasser | 2014-04-10
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème lorsque le répertoire cible a été ouvert dans l'Explorateur Windows. La fermeture de l'Explorateur Windows de le faire fonctionner.
OriginalL'auteur dannyxyz22
Puisque c'est Windows, il se pourrait que le chemin d'accès cible existe et est en cours d'utilisation par un autre processus..
OriginalL'auteur Tassos Bassoukos
J'ai eu la même exception d'appel
Files.move(path1, path2, StandardCopyOption.ATOMIC_MOVE)
lorsque l'un des chemins est fichier et un autre répertoire.OriginalL'auteur user2418306
Lorsque le répertoire est déplacé vers un autre emplacement de la même disque dur (et même partition) les fichiers n'ont pas à être déplacé. Ce que le
Files.move()
méthode n'est essentiellement de renommer le répertoire et laisse les fichiers intacts.Par la façon dont vous pouvez obtenir cette exception, car dans ce répertoire un fichier en cours de lecture par votre propre ou d'une autre application.
OriginalL'auteur Novi
Ok, donc j'ai essayer de les corriger même exception de moi-même et même si cette question est de 2 ans, je vais poster pour quelqu'un d'autre pourrait trouver utile.
J'ai trouvé mon fichier est marqué "lecture seule", après avoir désactivé tout a bien fonctionné.
OriginalL'auteur Nightwhistle
J'ai trouvé la réponse.
Dans mon cas, c'est parce que le répertoire est ouvert dans l'Explorateur Windows.
Dans certains cas, Windows essayez de charger un aperçu, mettre un drapeau sur le fichier qui l'empêche de le supprimer.
Je parle de cette icône:
Vous pouvez désélectionner l'icône ou tout simplement fermer l'Explorateur Windows et le problème est résolu.
OriginalL'auteur psv
Bien dans mon cas, le dossier de destination était déjà présent, donc je l'ai supprimé en premier et ensuite déplacé le dossier source.
OriginalL'auteur P3A