Comment puis-je déplacer un fichier vers un répertoire non vide?
Je suis nouveau sur Java nio paquet et je ne peux pas comprendre comment obtenir un fichier d'un répertoire dans un autre. Mon programme est censé lire à travers un répertoire et de ses sous-répertoires et des fichiers du processus en fonction de certaines conditions. Je peux obtenir tous les fichiers à l'aide de Fichiers.walkFileTree mais quand j'essaie de bouger, je les reçois un java.nio.fichier.AccessDeniedException.
Si j'essaie de les copier, je reçois un DirectoryNotEmptyException. Je n'ai pas été en mesure de trouver de l'aide sur Google. Je suis sûr qu'il y a un moyen facile de déplacer un fichier d'un répertoire à un autre, mais je ne peux pas le comprendre.
C'est ce que je suis en train qui obtient le DirectoryNotEmptyException:
private static void findMatchingPdf(Path file, ArrayList cgbaFiles) {
Iterator iter = cgbaFiles.iterator();
String pdfOfFile = file.getFileName().toString().substring(0, file.getFileName().toString().length() - 5) + ".pdf";
while (iter.hasNext()){
Path cgbaFile = (Path) iter.next();
if (cgbaFile.getFileName().toString().equals(pdfOfFile)) {
try {
Files.move(file, cgbaFile.getParent(), StandardCopyOption.REPLACE_EXISTING);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
Je suis une itération à travers une liste des fichiers, essayer de faire correspondre un .méta-fichier avec une .pdf du même nom. Une fois que je trouve le match, je déplace le fichier de métadonnées dans le répertoire qui a le pdf.
- Je obtenir cette exception:
java.nio.fichier.DirectoryNotEmptyException: C:\test\CGBA-RAC\Part-A
au coucher du soleil.nio.fs.WindowsFileCopy.déplacer(WindowsFileCopy.java:372)
au coucher du soleil.nio.fs.WindowsFileSystemProvider.déplacer(WindowsFileSystemProvider.java:287)
à java.nio.fichier.Les fichiers.déplacer(les Fichiers.java:1347)
au cgba.rac.errorprocessor.ErrorProcessor.findMatchingPdf(ErrorProcessor.java:149)
au cgba.rac.errorprocessor.ErrorProcessor.matchErrorFile(ErrorProcessor.java:81)
au cgba.rac.errorprocessor.ErrorProcessor.principale(ErrorProcessor.java:36)
- J'ai édité un peu de code dans mon OP.
- double possible de Comment faire pour copier un fichier vers un répertoire dans Java 7
Vous devez vous connecter pour publier un commentaire.
Pour la cible, vous êtes en fournissant le dossier que vous souhaitez déplacer le fichier dans. Ceci est incorrect. La cible devrait être le nouveau chemin d'accès que vous souhaitez que le fichier--le nouveau répertoire plus le nom de fichier.
Par exemple, supposons que vous vouliez déplacer
/tmp/foo.txt
à la/var/tmp
répertoire. Vous appelezFiles.move("/tmp/foo.txt", "/var/tmp")
lorsque vous devez appelerFiles.move("/tmp/foo.txt", "/var/tmp/foo.txt")
.Vous obtenez cette erreur spécifique parce que la JVM est d'essayer de supprimer le répertoire cible afin de le remplacer par le fichier.
L'un de ces devrait générer le bon chemin cible:
java.nio.fichier.Fichiers est une nécessité, donc, ici, est monté en solution. Merci de voir si cela fonctionne coz je n'ai jamais utilisé les nouveaux Fichiers de la catégorie avant