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

我需要关闭ByteArrayInputStream吗?
EN

Stack Overflow用户
提问于 2011-02-25 22:11:09
回答 3查看 27K关注 0票数 49

简短的问题,

我在一些旧代码中看到,ByteArrayInputStream是这样创建的:

代码语言:javascript
复制
new BufferedReader(new InputStreamReader(new ByteArrayInputStream(somebytes)));

然后使用BufferedReader逐行读出somebytes

一切正常,但我注意到BufferedReader从不关闭。

这都是在一个长时间运行的websphere应用程序中工作的,somebytes不是很大(最多200k),它一周只被调用几次,我们没有遇到任何明显的内存泄漏。所以我希望所有的对象都被成功地垃圾回收。

我总是(曾经)在finally语句中了解到需要关闭输入/输出流。ByteStreams是这条规则的例外吗?

亲切地问候Jeroen。

EN

回答 3

Stack Overflow用户

发布于 2011-02-25 22:15:53

关闭你的读者总是一个很好的做法。但是,不关闭ByteArrayInputStream不会有很大的潜在负面影响,因为您访问的不是文件,而只是内存中的字节数组。

票数 11
EN

Stack Overflow用户

发布于 2017-09-07 15:45:59

正如@TomaszNurkiewicz提到的,关闭打开的流总是很好的。让它自己做try代码块的另一个好方法。对资源使用try,如.......

代码语言:javascript
复制
try ( InputStream inputStream = new ByteArrayInputStream(bytes); Workbook workBook = new XSSFWorkbook(inputStream)) { 

在这里,Workbook和InputStream都实现了Closeable接口,所以一旦try块完成(正常或突然),流肯定会被关闭。

票数 2
EN

Stack Overflow用户

发布于 2011-02-25 22:14:50

需要在finally (或等效物)中关闭资源。但是当你只有几个字节的时候,不,这并不重要。不过,在编写代码时,要小心在flush中使用happy。

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

https://stackoverflow.com/questions/5118204

复制
相关文章

相似问题

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