Java 使用资源进行尝试时DigestInputStream是否关闭了原始InputStream?
如果我在try with resources块中声明了DigestInputStream,是否需要显式关闭原始InputStream 例如:Java 使用资源进行尝试时DigestInputStream是否关闭了原始InputStream?,java,stream,try-catch,Java,Stream,Try Catch,如果我在try with resources块中声明了DigestInputStream,是否需要显式关闭原始InputStream 例如: InputStream is = ...; MessageDigest md = ...; try (final DigestInputStream digestInputStream = new DigestInputStream(is, md)) { // Read the stream... } 是否需要手动关闭?否。它将自动关闭 以下是
InputStream is = ...;
MessageDigest md = ...;
try (final DigestInputStream digestInputStream = new DigestInputStream(is, md)) {
// Read the stream...
}
是否需要手动关闭?否。它将自动关闭 以下是java.io.FilterInputStream的源代码: 因为DigestInputStream是自动关闭的,所以在try with resources块中声明它时,不需要手动关闭它 来自自动关闭的Docu: {@code AutoCloseable}的{@link close}方法 对象在退出{@代码时自动调用 try}-with resources块,在其中声明了对象 资源规范标头 此外,FilterInputStream重写Close方法,该方法关闭使用的InputStream
public void close() throws IOException {
in.close();
}