Java递归删除文件夹以及文件夹下的子文件(包含子文件夹)

本文介绍了如何使用Java编程语言中的File类,实现递归删除指定文件夹及其所有子文件,确保在运行期间异常发生时,之前删除的操作不会被撤销。

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

package test;

import java.io.File;
import java.util.Objects;

/**
 * 递归实现文件夹以及子文件、文件夹的删除,注意,如果运行期间出现异常,那么之前做的删除操作依旧作数,只要代码运行就会删除文件
 * @author : Barry.chen
 * @date : 2024-04-13
 **/
public class Test {

    // 设置要删除的文件夹路径 例子:(D:\\ZZZ)
    private final static String FOLDER_PATH = "文件路径";

    private static boolean deleteFile(String filePath){
        // 拿到文件夹
        File file = new File(filePath);
        // 文件夹下所有文件
        File[] allFile = file.listFiles();

        if (Objects.isNull(allFile)) {
            file.delete();
            return true;
        }

        // 到这个位置了,一定有子文件夹或者子文件
        for (File everyFile : allFile) {
            if (everyFile.isDirectory()) {
                // 遍历遇到文件夹了,递归删除文件夹内部的文件
                deleteFile(everyFile.getPath());
            }

            if (everyFile.isFile()) {
                // 遍历遇到文件了,删除
                everyFile.delete();
            }
        }

        if (allFile.length != 0 && file.isDirectory()) {
            // 没删干净或者有子文件夹,再来一遍
            deleteFile(filePath);
        }

        // 子文件夹全部删完,准备删父文件夹
        // 删掉空的父文件夹
        file.delete();
        // 结束
        return true;
    }

    // 方法调用
    public static void main(String[] args) {
        deleteFile(FOLDER_PATH);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值