前几天在进行对文件的操作时,需要删除文件,在删除文件时我的思路是这样的,先上传文件,上传成功之后对.zip文件进行解压,如果在解压的过程中抛异常,说明解压失败,前台提示信息,另外需要删除文件。可是我无论如何都删除不了错误的.zip文件,方法是用的file.delete()方法,结果返回false。最后我在删除文件前调用了system.gc()方法,也就是垃圾回收机制,结果删除成功,现在对解释一下为什么调用gc机制就可以强制删除文件。
首先,file.delete()删除失败的原因,有一下几种可能会造成文件删除失败:
1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用)
2.file是文件夹 并且不为空,有别的文件夹或文件,
3.极有可能有可能自己前面没有关闭此文件的流(我遇到的情况)。
其次,gc机制回收垃圾的原理:
垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间