gpt4 book ai didi

java.nio.file.FileSystemException 移动文件时

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:27 25 4
gpt4 key购买 nike

我正在尝试使用 pdf-renderer 从 pdf 文件的最后一页创建图像。没问题。但是创建图像后,我想将原始pdf文件移动到新文件夹,但总是失败。

java.nio.file.FileSystemException: D:\test.pdf -> D:\folder\test.pdf: The process cannot access the file because it is being used by another process.

这是我的示例代码:

    private String convertPDFtoImage(String myFile, String lokasiAwal, String lokasiBaru) {
try {
File pdfFile = new File(myFile);
RandomAccessFile raf = new RandomAccessFile(pdfFile, "r");
FileChannel channel = raf.getChannel();
ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
PDFFile pdf = new PDFFile(buf);
Integer lastPage = pdf.getNumPages();
PDFPage page = pdf.getPage(lastPage);
Rectangle rect = new Rectangle(0, 0, (int) page.getBBox().getWidth(), (int) page.getBBox().getHeight());
int width = rect.width;
int height = rect.height;
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Image image = page.getImage(width, height, rect, null, true, true);
Graphics2D bufImageGraphics = bufferedImage.createGraphics();
bufImageGraphics.drawImage(image, 0, 0, null);
String newImage = System.getProperty("user.home")+"/images/test.png";
BufferedImage dest = bufferedImage.getSubimage(0, 0, width, height);
ImageIO.write(dest, "png", new File(newImage));
raf.close();
Files.move(Paths.get(lokasiAwal), Paths.get(lokasiBaru));
return newImage;
} catch (IOException e) {
e.printStackTrace();
return "error";
}
}

我认为这是因为该文件仍在被我的应用程序使用。我已经尝试过 raf.close() 或 channel.close() 或两者,但没有运气。我不知道是什么锁定了我的文件。我该如何修复它?

最佳答案

您可以尝试在 ConvertPDFtoImage 方法之外进行移动吗?这样它应该更干净,因为 raf、channel 都是该方法的本地函数。

关于java.nio.file.FileSystemException 移动文件时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com