InputStream
作为参数从某处传递进来,将在那里被进一步处理,然后关闭。因此我不想在这里关闭 InputStream
。考虑以下代码:
void readInputStream(final InputStream inputStream) {
final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = bufferedReader.readLine() != null) {
// do my thing
}
}
如果我关闭
BufferedReader
和/或InputStreamReader
,那么根据另一个Stackoverflow帖子的说法,底层的InputStream
也将被关闭。我的问题是:即使底层的
InputStream
在其他地方已经关闭,读取器是否仍需要关闭?如果不关闭读取器,会导致内存泄漏吗?
BufferedReader
,而是将其作为参数传入。这样,你的应用程序中将只有 一个 BufferedReader,并且当它不再需要时可以关闭它,这也会关闭底层的InputStream
。 - Pshemo