Search code examples
javaimageiolockingfile-locking

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


My app is saving images into a folder. Simultaneously another piece of software watches over this folder and prints pasted images.

Problem I've encountered is that printing app can send on printer half rendered image or doesn't react to saved images at all.

I'm using javax.imageio.ImageIO.write(RenderedImage im, String formatName, File output) to save BufferedImage into png format.

If locking required please provide a code example with explicit locks. If not explain why.

I've tested on Windows, JRE 1.8


Solution

  • Basically, you should write the image to a temporary file and then rename it to the final file name. this way the file is completely written before the other app becomes aware of it.