`javax.imageio.ImageIO` 是否需要文件锁定?

Does `javax.imageio.ImageIO` require file locking?

我的应用正在将图像保存到文件夹中。同时另一个软件监视这个文件夹并打印粘贴的图像。

我遇到的问题是打印应用程序可以在打印机上发送半渲染图像或根本不对保存的图像做出反应。

我正在使用 javax.imageio.ImageIO.write(RenderedImage im, String formatName, File output)BufferedImage 保存为 png 格式。

如果需要锁定,请提供带有显式锁定的代码示例。如果不解释为什么。

我在 WindowsJRE 1.8

上测试过

您可能想要实现某种锁定机制,即只有在文件完全写入时才读取文件,或者根本不读取文件。

基本上,您应该将图像写入临时文件,然后将其重命名为最终文件名。这样文件就可以在其他应用程序意识到之前被完全写入。