首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IOUtils:需要关闭OutputStream吗?

IOUtils:需要关闭OutputStream吗?
EN

Stack Overflow用户
提问于 2016-07-17 08:37:27
回答 2查看 2.3K关注 0票数 2

这个答案中,一个人建议使用IOUtils.copy,但他没有关闭OutputStream。以下是他的例子:

代码语言:javascript
复制
InputStream is = new URL(imgUrl).openStream();
OutputStream os = servletResponse.getOutputStream();

IOUtils.copy(is, os);
is.close();

我检查了IOUtils中的IOUtils方法的javadocs,并且没有关于OutputStream将自动关闭的信息,所以我很好奇,在这个示例中是否需要关闭OutputStream?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-17 09:08:19

IOUtils.copy(InputStream, OutputStream)不能关闭OutputStream。例如,您可以使用它连接不同的InputStreams,在这种情况下,如果关闭提供的输入和/或OutputStream,这将是个坏主意。

根据经验法则,任何方法都应该只关闭它打开的蒸汽。另见我应该关闭servlet输出流吗?

票数 3
EN

Stack Overflow用户

发布于 2016-07-17 08:39:41

正如您所说的,文献资料没有为您关闭OutputStream,所以您需要关闭它(显式的,或者使用try-with-resources)。

托马什没有在这个答案中关闭流的原因是它是servlet响应的输出流。正如安迪赫评论中所说,您只关闭打开的流。servlet容器管理servlet响应流。

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

https://stackoverflow.com/questions/38419378

复制
相关文章

相似问题

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