Должен ли я написать
BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(file)); ImageIO.write(im, "JPEG", os);
вместо
ImageIO.write(im, "JPEG", file);
т.е. файловые операции ImageIO буферизируются по умолчанию или нет?
Спасибо!
Если вы передадите File, базовая реализация запишет непосредственно в RandomAccessFile (созданный в режиме "rw"), поэтому буферизация не будет.В частности, FileImageOutputStream будет использоваться как ImageOutputStream.
File
RandomAccessFile
"rw"
FileImageOutputStream
ImageOutputStream
Вам нужно будет использовать BufferedOutputStream (как в примере 1, упомянутом в вопросе).
ImageIo.write по умолчанию не буферизуетсяЭто зависит от того, что вы передаете ему в аргументах.В случае передачи объекта File он не будет буферизован для записи.
Я полагаю, что это зависит от конкретной реализации IIORegistry, которая, как я полагаю, зависит от системы.
IIORegistry
Я бы ожидал, что он будет буферизован, но я полагаю, что вы могли бы полностью использовать первый вариант.