Java PDF框-无法重命名或删除文件

Java PDF框-无法重命名或删除文件,java,file,pdf,pdfbox,Java,File,Pdf,Pdfbox,我对编程相当陌生,我一直在尝试将PDFBox用于我的个人项目。我基本上是想验证PDF是否有特定的关键字,如果有,我想将文件传输到一个批准的文件夹 我知道下面的代码写得不好,但我无法正确传输或删除文件: try (Stream<Path> filePathStream = Files.walk(Paths.get("C://pdfbox_teste"))) { filePathStream.forEach(filePath -> {

我对编程相当陌生,我一直在尝试将PDFBox用于我的个人项目。我基本上是想验证PDF是否有特定的关键字,如果有,我想将文件传输到一个批准的文件夹

我知道下面的代码写得不好,但我无法正确传输或删除文件:

   try (Stream<Path> filePathStream = Files.walk(Paths.get("C://pdfbox_teste"))) {

       filePathStream.forEach(filePath -> {

            if (Files.isRegularFile(filePath)) {

                String arquivo = filePath.toString();
                File file = new File(arquivo);

                try {
                    // Loading an existing document
                    PDDocument document = PDDocument.load(file);

                    // Instantiate PDFTextStripper class
                    PDFTextStripper pdfStripper = new PDFTextStripper();

                    String text = pdfStripper.getText(document);

                    String[] words = text.split("\\.|,|\\s");
                    for (String word : words) {

                        // System.out.println(word);

                        if (word.equals("Revisão") || word.equals("Desenvolvimento")) {


                    // System.out.println(word);
                            if(file.renameTo(new File("C://pdfbox_teste//Aprovados//" + file.getName()))){

                                document.close();
                                System.out.println("Arquivo transferido corretamente");
                                file.delete();

                            };

                        }

                    }
                    System.out.println("Fim do documento: " + arquivo);
                    System.out.println("----------------------------");
                    document.close();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }
        });

我想把文件转移到新文件夹。相反,有时它们只会被删除,有时什么也不会发生。我想可能是foreach上出现了错误,但我似乎找不到修复它的方法。

在调用renameTo后,您不应该使用delete。。据我所知,renameTo的工作原理类似于移动命令。请参见

您试图在文件仍处于打开状态时重命名该文件,然后才将其关闭:

// your code, does not work
if(file.renameTo(new File("C://pdfbox_teste//Aprovados//" + file.getName()))){
    document.close();
    System.out.println("Arquivo transferido corretamente");
    file.delete();
};
请先尝试关闭文档,以便您的进程不再访问该文件,然后可以对其进行重命名:

// fixed code:
document.close();
if(file.renameTo(new File("C://pdfbox_teste//Aprovados//" + file.getName()))){
    System.out.println("Arquivo transferido corretamente");
};
正如Mahesh K所指出的,重命名原始文件后不必删除它。“重命名”不会在需要删除原始文件的位置复制,它只是对其进行重命名