加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何避免关闭传递给我包装在Reader流中的方法的InputStr

发布时间:2020-12-14 05:49:14 所属栏目:Java 来源:网络整理
导读:我正在创建一个接受单个InputStream作为参数的 Java方法.为了方便使用基于字符的流,我将在提供的InputStream包装方法实现的开始如下: public void doStuff(InputStream inStream) { BufferedReader reader = new BufferedReader(new InputStreamReader(inSt
我正在创建一个接受单个InputStream作为参数的 Java方法.为了方便使用基于字符的流,我将在提供的InputStream包装方法实现的开始如下:
public void doStuff(InputStream inStream) {
   BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
   ...
}

由于InputStream(inStream)传递给我的方法,我不想关闭它…因为我认为这应该是客户端调用我的方法的责任(这是否正确?但是,我认为我应该关闭我创建的BufferedReader;但是在这样做的时候,我相信它会自动关闭所有其他组合流,包括inStream.

有没有人看到一种方法来关闭我在创建的BufferedReader和InputStreamReader,而不关闭传递给我的方法的InputStream?可能有一种方法可以在提供的InputStream的副本包装之前?谢谢

解决方法

当您不想关闭底层阅读器时,您不需要关闭BufferedReader或InputStreamReader或大多数读者实现.

这些读者没有任何资源,关闭()的调用将免费,并且垃圾回收器将无法自由(例如本机资源或静态变量中的值),当您将引用放在读者的最后方法.

与本机资源通信的底层输入流,例如FileInputStream或从URL获取的流必须关闭才能释放这些本机资源.

对于Writer来说,close()通常调用flush()有一个区别.但是,您可以直接调用flush().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读