首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java BufferedImage到ByteArrayOutputStream而没有关闭ByteArrayOutputStream

Java BufferedImage到ByteArrayOutputStream而没有关闭ByteArrayOutputStream
EN

Stack Overflow用户
提问于 2016-11-11 12:23:05
回答 2查看 940关注 0票数 1

拥有一个java.awt.image.BufferedImage并通过以下方式返回一个ByteArrayOutputStream

代码语言:javascript
复制
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write( combined, "png", baos );
return baos;

然后生成一个在REST端点上返回的base64表示:

代码语言:javascript
复制
return new String(Base64.encodeBase64(baos.toByteArray()), Charset.forName("UTF-8"));

我的问题是:我应该冲洗并关闭包吗?

(我从来不知道什么时候该关包,什么时候不关,所以任何小费都会很感激)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-11 12:27:16

我的问题是:我应该冲洗并关闭包吗?

好的做法是总是关闭OutputStream,但是对于ByteArrayOutputStream,方法flushclose不做任何事情,所以它是不需要的(查看链接以自己查看)。

来自 close()的Javadoc

关闭ByteArrayOutputStream没有任何效果。

来自 OutputStream#flush()的Javadoc (因为ByteArrayOutputStream没有覆盖它)

OutputStream的刷新方法不起任何作用。

票数 2
EN

Stack Overflow用户

发布于 2016-11-11 12:28:50

它的工作方式如下:

flush()方法会将所有剩余的元素推到目的地,比如冲马桶的时候。

在使用close()之前,您应该使用flush(),以确保没有任何剩余的东西,因为如果您关闭时没有发送所有的东西,那么它可能会丢失。

您应该在“使用流”之后使用flush()close()

这适用于所有的OutputStreams。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40547954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档