gpt4 book ai didi

java - 如果它们通过 java 包装在缓冲区中,我是否必须显式关闭所有流?

转载 作者:搜寻专家 更新时间:2023-10-31 08:11:50 25 4
gpt4 key购买 nike

private InputStream input;
private InputStreamReader inputReader;
private BufferedReader reader;

try {
input = new InputStream();
inputStreamReader = new InputStreamReader(inputStream);
reader = new BufferedReader(inputStreamReader);
// do I/O operations
} catch (IOException e) {
Log.d("IOException", "The Data Could Not Be Read =/");
} finally {
try {
reader.close(); // now will this, by default, close all other streams? OR
/*
* input.close(); inputStream.close(); //is this necessary, along with
* reader.close();
*/
} catch (IOException ex) {
ex.printStackTrace();
}
}

我今天遇到了这个问题,我不确定它们是否会被关闭,因为它被包裹了,或者是否仍然有必要关闭所有流独立。

最佳答案

如果任何阅读器或流修饰另一个阅读器/流,则关闭外部阅读器或流也会关闭内部阅读器。这可以从 Closeable#close() 的 Javadoc 中得到暗示。 :

Closes this stream and releases any system resources associated with it.

这也适用于底层资源。

如果您很好奇,可以深入研究这些类的来源,例如。在 BufferedReader 中:

public void close() throws IOException {
synchronized (lock) {
if (in == null)
return;
try {
in.close();
} finally {
in = null;
cb = null;
}
}
}

其中 in 是底层的 Reader

关于java - 如果它们通过 java 包装在缓冲区中,我是否必须显式关闭所有流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34074078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com