我java.awt.image.BufferedImage
获得并返回ByteArrayOutputStream
:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( combined, "png", baos );
return baos;
然后我生成一个要在REST端点上返回的base64表示:
return new String(Base64.encodeBase64(baos.toByteArray()), Charset.forName("UTF-8"));
我的问题是:我应该冲洗并关闭宝马吗?
(当我关闭一个宝贝时,我从来没有正确理解,如果没有,那么任何提示都会受到赞赏)
答案 0 :(得分:2)
我的问题是:我应该冲洗并关闭宝马吗?
好的做法是始终关闭OutputStream
,但如果是ByteArrayOutputStream
,方法flush
和close
不会做任何事情,所以它不是必填(查看链接以自行查看)。
来自close()
关闭
ByteArrayOutputStream
无效。
来自OutputStream#flush()
的Javadoc(因为ByteArrayOutputStream
不会覆盖它)
OutputStream
的flush方法不执行任何操作。
答案 1 :(得分:1)
它的工作原理如下:
flush()
方法会将所有剩余元素推送到目的地,就像冲厕所一样。
在使用close()
之前,您应该使用flush()
以确保没有剩余的内容,因为如果您在没有发送任何内容的情况下关闭它,它可能会丢失。
使用“流”后,您应该使用flush()
和close()
。
这适用于所有OutputStream。