Java执行文件操作后,递归创建的文件夹过深,无限循环,无法删除

递归创建的文件夹过深无法删除

前几天对文件类进行测试,不小心创建了一个n层级的文件夹,网上找了很多方法,不是让下软件,就是批处理文件,这些方法我都进行了尝试,但全部都无法使用;
后来稍微想了一下解决方案,完美删除;
先说核心思想:要用魔法打败魔法;
既然我们n层级的文件夹时由于递归操作生成的,那理论上我们重新递归对文件夹进行删除即可;
废话不多说,上代码

private static void deleteAll(String filePath) {
    File file = new File(filePath);
    if (file.isFile()) {//如果是文件,直接删除
        System.out.println(file + "文件" + (file.delete() ? "已删除" : "未删除"));
    }
    if (file.isDirectory()) {
        File[] fileAll = file.listFiles();//获取文件夹下的子目录
        if (fileAll == null) {//如果文件夹为空,直接return,预防NullPointException
            return;
        }
        if(fileAll.length != 0) {//如果文件夹内子文件夹的长度不为0则说明该文件夹下还有子目录
            for (File part : fileAll) {//继续遍历子目录列表,向下递归
                deleteAll(part.getAbsolutePath());
            }
        } else {//反之,长度为0说明没有该文件夹下没有子目录,直接删除即可
            System.out.println(file + "文件夹" + (file.delete() ? "已删除" : "未删除"));
        }
        System.out.println(file + "文件夹" + (file.delete() ? "已删除" : "未删除"));
        }
    }

代码仅供参考,思路都是一样的,可以自己尝试写一写,或者在自己原有的代码上进行修改;毕竟出现这种错误多半是编写代码进行文件复制等操作,方法逻辑出错造成的;
关于这段代码的使用注意事项:
直接从第一层传入参数则很可能会删除失败,建议先对文件夹路径进行复制,能复制多少就复制多少层,越多越好;
举个例子,
比如说一开始我设置参数列表中传入的参数是"D://Study//FileTest",运行结果是删除失败;
于是我多复制了几次递归的文件夹:
复制的目录
然后,删除成功:
运行结果
这里程序运行删除成功后可以改变参数继续尝试删除,也可以直接进入文件系统进行删除;
最终我成功删除了这个递归文件夹;
在回收站里的递归文件夹

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值