如果我在try-with-resources块中声明了InputStream
,是否需要显式关闭原始的DigestInputStream
?
例:
InputStream is = ...;
MessageDigest md = ...;
try (final DigestInputStream digestInputStream = new DigestInputStream(is, md)) {
// Read the stream...
}
是否需要手动关闭?
最佳答案
因为DigestInputStream
是AutoCloseable
,所以在try-with-resources块中声明它时无需手动将其关闭。AutoCloseable
中的文档:
{@code AutoCloseable}的{@link #close()}方法
退出{@code时,会自动调用对象
try} -with-resources块,已在其中声明了对象
资源规范头。
另外,FilterInputStream
会覆盖close
方法,该方法将关闭使用的InputStream
。