最近做的东西涉及文件操作,生成文件,打压缩包一切ok,但是当我要删除本地生成的文件时,无法删除,文件资源被java程序占用。后来通过查看书籍找到了问题所在。
文件资源被占用的原因很简单,文件流打开后未关闭。所以我对代码所有打开的文件流进行排查,所有打开的文件流都进行了关闭,但是很不幸,生成的文件仍然无法关闭,最后去查看资料是如何生成zip压缩包的,发现zip有个closeEntry()操作,closeEntry():关闭这个zip文件中当前打开的项。原来创建zipEntry的时候打开了文件,在调用zip的close前需要先调用closeEntry()方法才行。注意,文件流的关闭遵循一个原则:先打开后关闭