获取java.io.IOException:流关闭错误而不显式关闭它

时间:2018-06-22 08:19:57

标签: java fileoutputstream zipinputstream

即使我没有关闭任何流,我的zipInputStream也会在写入第一个文件本身后关闭。

root
 |-- _1: string (nullable = true)   
 |-- _2: struct (nullable = true)  
 |    |-- _1: string (nullable = true)
 |    |-- _2: string (nullable = true)

1 个答案:

答案 0 :(得分:1)

您正在使用语法 try-with-resource 。括号内的所有内容都会自动关闭,就像有一个finally块将其关闭一样。

in在隐式finally块中关闭时,zipInputStream也将被关闭,因为BufferedInputStreamFilterInputStream的子类,当其自身关闭时,它会关闭其源代码

(通常,大多数实现Closable的类都会在调用close时释放所有关联的资源)

查看FilterInputStream::close的实现 https://github.com/openjdk-mirror/jdk7u-jdk/blob/master/src/share/classes/java/io/FilterInputStream.java

https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html