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(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |