java File delete()执行失败原因(转)

本文详细介绍了Java中如何使用File类的delete方法删除文件和目录,并解释了常见的删除失败原因及解决办法。通过示例代码展示了如何确保文件正确关闭后再进行删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java.io.File里的delete操作很实用也很常用,可以用来删除单独的文件和某一目录。但有时候会出现delete失败的情况,出现这种情况的原因一般有以下几种:
1、删除时还有其他程序在使用该文件,此时将无法正确删除
2、没有close关闭和该文件相关的所有输入输出流等,导致无法删除(这一点是最容易忘记的,你犯的可能就是这一条)
3、当删除某一目录时,必须保证该目录下没有其他文件才能正确删除,否则将删除失败。这里可以采用listFiles对目录下的文件或者目录进行处理。
下面给出一个具体的例子:

File f = new File(path);
DataOutputStream dos = new DataOutputStream(new FileOutputStream(f));
 if (f.exists()) {
                    System.out.println(f.getAbsoluteFile());
                    if (!f.delete()) {
                        System.out.println("请关闭使用该文件的所有进程或者流!!");
                    } else {
                        System.out.println(f.getName()+" 成功被删除!");
                    }
                }

此时f是无法delete的,即f.delete()将返回false,原因就在于没有关闭dos.所以需要在if之前加入一句f.close(),这样就可以删除成功了。

File f = new File(path);
DataOutputStream dos = new DataOutputStream(new FileOutputStream(f));
dos.close();
 if (f.exists()) {
                    System.out.println(f.getAbsoluteFile());
                    if (!f.delete()) {
                        System.out.println("请关闭使用该文件的所有进程或者流!!");
                    } else {
                        System.out.println(f.getName()+" 成功被删除!");
                    }
                }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值