下面是jdk中的描述:
close
public void close()
throws IOException关闭 ZIP 输出流和正在过滤的流。
finish
public void finish()
throws IOException完成写入 ZIP 输出流的内容,无需关闭基础流。对同一输出流连续应用多个过滤器时使用此方法。
今天在用findbug检视项目代码时候,报Method may fail to close stream ,从提示信息看是有流没有关闭,
跟到代码中看了下,发现是ZipOutputStream 并没有使用close()关闭流,而是使用的finish().
到网上搜了下没有找到finish()的太多资料,各位看官对finish()的使用场景有何见解,小弟请教了。
------解决方案--------------------
我的理解:close是关闭了基础流和ZIP流,而finish是关闭了ZIP流,当一个基础流被多个ZIP流使用时,你的基础流被close关闭了,于是就用不了了