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)

InformationsquelleAutor user2406854 | 2014-10-31