Java工具类之删除文件

删除某个文件或文件夹

由于File的delete方法,如果文件夹有文件的话,执行该delete是无效的, 所以代码里用到了递归删除。并且delete是直接删除了,不会放到回收站,所以使用要慎重。

import java.io.File;

public class FileUtils {
    /**
     * 删除文件或文件夹
     *
     * @param needDelFile 需要被删除的文件对象
     * @return 是否成功删除干净
     */
    public static boolean deleteFile(File needDelFile) {
        return needDelFile != null && needDelFile.exists() && deleteFile(true, needDelFile);
    }

    /**
     * 删除文件或文件夹
     *
     * @param lastFlg     上一次递归删除的结果
     * @param needDelFile 需要被删除的文件对象
     * @return 是否成功删除干净
     */
    private static boolean deleteFile(boolean lastFlg, File needDelFile) {
        //必须从里面先删除
        if (needDelFile.isDirectory()) {
            for (File childFile :
                    needDelFile.listFiles()) {
                lastFlg = lastFlg & deleteFile(lastFlg, childFile);
            }
        }
        boolean delResult = needDelFile.delete();
        System.out.println("文件:" + needDelFile.getName() + ",删除:" + delResult);
        return lastFlg && delResult;
    }

    public static void main(String[] args) {
        boolean delFlg = FileUtils.deleteFile(new File("D:\\a"));
        System.out.println(delFlg);
    }
}

代码测试

a文件夹的结构:
在这里插入图片描述
上述代码控制台输出:

文件:c,删除:true
文件:c1.txt,删除:true
文件:b,删除:true
文件:b1.txt,删除:true
文件:a,删除:true
true

如果将文件c1.txt的权限设置为拒绝(文件右键 -》属性 -》 安全 -》 编辑权限)删除。

上述代码控制台输出:

文件:c,删除:true
文件:c1.txt,删除:false
文件:b,删除:false
文件:b1.txt,删除:true
文件:a,删除:false
false
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值