我正在创建一个接受单个InputStream
作为参数的Java方法。对于使用基于字符流工作的方便,我在方法开始实施包裹提供InputStream
如下:如何避免关闭传递给我在Reader中包装的方法的InputStream?
public void doStuff(InputStream inStream) {
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
...
}
由于InputStream
(inStream
)传递给我的方法,我不想关闭它......因为我认为这应该是客户端调用我的方法的责任(这个假设是否正确?)。不过,我认为我应该关闭我创建的BufferedReader
;但是这样做,我相信它会自动关闭所有其他组成的流,包括inStream
。
有没有人看到一种方法让我关闭BufferedReader
和InputStreamReader
,我创建的时候没有关闭传递给我的方法的InputStream
?也许有一种方法可以在我打包之前制作提供的InputStream
的副本?由于
你知道展开的流几乎没用吗? – 2010-07-12 16:22:05
你应该在创建InputStreamReader时提供一个特定的“Charset”,而不是忽略它,并让平台默认使用。 – ColinD 2010-07-12 16:23:34
汤姆,你能澄清一下你的意思吗?“解包后的流几乎没用”? – user389591 2010-07-13 14:38:21