Java PDF框-无法重命名或删除文件
我对编程相当陌生,我一直在尝试将PDFBox用于我的个人项目。我基本上是想验证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 -> {
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所指出的,重命名原始文件后不必删除它。“重命名”不会在需要删除原始文件的位置复制,它只是对其进行重命名