我正在創建一個接受單個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