Java调用gc机制强制删除文件

在Java中尝试使用file.delete()删除文件失败,可能是文件被占用、是非空文件夹或流未关闭。通过调用system.gc()进行垃圾回收,能关闭未关闭的流,从而成功删除文件。但频繁使用GC调用并不推荐。
摘要由CSDN通过智能技术生成

    前几天在进行对文件的操作时,需要删除文件,在删除文件时我的思路是这样的,先上传文件,上传成功之后对.zip文件进行解压,如果在解压的过程中抛异常,说明解压失败,前台提示信息,另外需要删除文件。可是我无论如何都删除不了错误的.zip文件,方法是用的file.delete()方法,结果返回false。最后我在删除文件前调用了system.gc()方法,也就是垃圾回收机制,结果删除成功,现在对解释一下为什么调用gc机制就可以强制删除文件。

  首先,file.delete()删除失败的原因,有一下几种可能会造成文件删除失败:

1.看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用)

2.file是文件夹 并且不为空,有别的文件夹或文件, 

3.极有可能有可能自己前面没有关闭此文件的流(我遇到的情况)。

 其次,gc机制回收垃圾的原理:

    垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值