【发布时间】:2015-04-25 21:27:33
【问题描述】:
我的应用程序正在将图像保存到文件夹中。同时另一个软件会监视这个文件夹并打印粘贴的图像。
我遇到的问题是打印应用程序可以在打印机上发送半渲染图像,或者根本不对保存的图像做出反应。
我正在使用javax.imageio.ImageIO.write(RenderedImage im, String formatName, File output) 将BufferedImage 保存为png 格式。
如果需要锁定,请提供带有显式锁定的代码示例。如果不解释原因。
我已经在Windows、JRE 1.8 上测试过
【问题讨论】:
-
写入后是否尝试过同步文件? docs.oracle.com/javase/8/docs/api/java/io/…
-
如果我正确理解 javadoc
sync会阻塞当前线程,直到缓冲区被刷新。所以应该在读取文件之前调用它,因此在打印应用程序中。无法编辑。 -
主要目的是强制(或至少要求)操作系统确保所有数据(包括元数据)都已保存到磁盘。我在过去看到过 Windows 的问题,其中 1 个进程写入文件,另一个进程几乎立即读取文件,而第二个进程看到的大小错误。
-
@BrettOkken 我如何证明这会有所帮助?
-
问题不在于它需要锁定。问题是它需要完整的文件,而您目前的技术无法确保这一点。
标签: java image io locking file-locking