Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用资源进行尝试时DigestInputStream是否关闭了原始InputStream?_Java_Stream_Try Catch - Fatal编程技术网

Java 使用资源进行尝试时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... } 是否需要手动关闭?否。它将自动关闭 以下是

如果我在try with resources块中声明了DigestInputStream,是否需要显式关闭原始InputStream

例如:

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();
}