使用file.delete删除文件不起作用解决办法

原因


  1. .看看是否被别的进程引用,手工删除试试(删除不了就是被别的进程占用)
  2. file是文件夹 并且不为空,有别的文件夹或文件
  3. 极有可能有可能自己前面没有关闭此文件的流(我遇到的情况)

解决办法

  1. 触发垃圾回收(不推荐)
/*
在执行删除语句前先执行,提醒或告诉虚拟机,希望进行一次垃圾回收,至于什么时候进行回收还是取决于虚拟机,而且也不能保证一定进行回收(如果-XX:+DisableExplicitGC设置成true,则不会进行回收)。
*/
System.gc();
  1. 关闭流
/*
在使用到当前文件或获取当前文件的方法中检查是否开启流和关闭流,若开启则必须关闭流,文件才能被正常删除。
*/
// 方法1:手动关闭
fileInputStream.close();
/** 
*方法2:使用Lombok中注解@Cleanup,在创建流的时候使用
*其结果就是在该作用域的末尾将调用in.close()方法,并使用了try/finally代码块确认该方法一定执行。
*/
// 例如:
@Cleanup InputStream in = new FileInputStream("some/file");
/*
如果想要标记一个没有close()方法的对象,但是有另一个没有参数的清除方法,可以像下面的代码中那样指定具体的清除方法名:
@Cleanup("dispose") org.eclipse.swt.widgets.CoolBar bar = new CoolBar(parent, 0);
默认情况下清除方法被认定为close()。包含一个或者多个参数的清除方法不能使用@Cleanup来进行调用。
*/
  1. 结束引用到该文件的其他进程

备注

删除文件前进行判断

//根据路径创建文件对象
File file = new File(path);
//路径是个文件且不为空时删除文件
if(file.isFile()&&file.exists()){
	flag = file.delete();
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿小白888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值