Java 使用pdf渲染器打开pdf文件后无法删除

Java 使用pdf渲染器打开pdf文件后无法删除,java,pdf,pdfrenderer,Java,Pdf,Pdfrenderer,我正在打开一个用iText创建的PDF文件。无需在PDF渲染器中打开它,只需正常打开并关闭它,我就可以删除并覆盖该文件。但是,一旦我使用PDF渲染器打开它,然后关闭它。我无法删除或替换PDF ByteBuffer buf; ... randomAccessFile = new RandomAccessFile(new File(file), "r"); fileChannel = randomAccessFile.getChannel(); buf = fileChannel.map(Fil

我正在打开一个用iText创建的PDF文件。无需在PDF渲染器中打开它,只需正常打开并关闭它,我就可以删除并覆盖该文件。但是,一旦我使用PDF渲染器打开它,然后关闭它。我无法删除或替换PDF

ByteBuffer buf;

...

randomAccessFile = new RandomAccessFile(new File(file), "r");
fileChannel = randomAccessFile.getChannel();
buf = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, fileChannel.size());
pdfFile = new PDFFile(buf);
然后,这里的代码获取图像并将其放入面板中

然后我关闭上面的项目


它仍然在某个地方打开,但我不知道在哪里,非常感谢您的帮助。

是否关闭该文件?如果您仍然有一个打开的文件,Java无法删除它。

错误似乎在取消关闭的rest中(或关闭fileChannel)


嘿,谢谢你的回复。但是,我不使用PdfReader类。我得到PDFPage,然后从该页面生成一个图像并将其放在JLabel上。然后我最终关闭了所有其他位,但由于某种原因,该文件仍然处于打开状态。当然,也关闭了randomAccessFile和fileChannel。然后,您只能注释掉部分代码,比如PDFPage,然后查看打开的内容。是的,我已经关闭了它们。我发现这和拜特缓冲器有关。当我清除它时,它仍然附带有文件。一旦我在清除ByteBuffer后将其设置为null,它就会正常工作。谢谢你的建议。
PDFFile pdfFile = new PDFFile(new File(file));
PdfReader pdfReader = pdfFile.getPdfReader();
try {
    ...
} finally {
    pdfReader.close();
}