Java递归删除文件夹

        Java可以直接删除文件或者空文件夹,但是当文件夹不为空时,就不能直接删除了,这时候可以使用递归将文件夹直接删除

        首先我们假设在D盘创建a文件夹,a中有一个b文件夹,b中有一个c文件夹,c中有三个文本文件,我们如果直接用文件对象.delete()去删除a文件夹,a文件夹不为空,所以会删除失败,所以只能递归一步一步删除。

public static void main(String[] args) {

        File file = new File("D:\\a");            //定义文件对象
        System.out.println(file.exists());        //这里判断一下文件确实存在
        delete(file);                             //然后将对象传到delete函数中
    }
    
    public static void delete(File file){
        if (file.isFile()){                        //首先判断该对象是不是文件,如果是文件可以直接删除
            file.delete();
        }else {
            File[] files = file.listFiles();        //如果不是文件,那就将该对象转换成文件对象数组
            for (int i = 0; files!=null && i < files.length; i++) {        //(1)接下来对数组进行遍历
                if (files[i].isFile()){             //再次判断文件是否为文件,如果是还是直接删除
                    files[i].delete();            
                }else {
                    delete(file);                   //(2)如果不是文件就调用自己,将数组中的对象作为参数传进delete()
                }
            }

        }
        file.delete();                              //(3)这里是回调结束以后返回时,需要将文件夹给删除
    }

难点解释:

        (1)将文件夹中的子文件转换成文件对象数组进行遍历再判断子文件是否为文件,如果是文件,那就可以直接删除

        (2)if不是文件,那就是文件夹,前面for已经判断文件夹不为空了,所以直接将文件夹进行递归

        (3)当递归结束,往回走时,需要删除自身文件夹

        以本题为例,我将题目带进去解释,要删除a文件夹,将a转为文件对象,传进delete函数,这时判断a是不是文件,显然不是,所以进入else份分支,将a转为文件对象数组,文件a中只有一个子问价夹b,所以只会循环一次,进入for循环,对b进行判断是否为文件,显然不是,进入else,进行递归,b中也是只有一个子文件夹c,结果和a一样,所以c进入递归,判断c不是文件,所以进入else分支,将c转换成文件对象数组,c文件夹中的元素全部都是文件,所以再遍历c的子文件对象数组时,直接在if语句判断将子文件对象全部删除,循环结束,c的递归开始返回,然后返回后执行(3)这个步骤,c此时为空文件夹,所以c直接被删除,然后开始返回b的递归,b也为空直接被删除,最后返回a的递归,a也被删除,这就是递归删除的全部过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/687562.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

22. 计算机网络 - 物理层

通信方式带通调制 通信方式 根据信息在传输线上的传送方向&#xff0c;分为以下三种通信方式&#xff1a; 单工通信&#xff1a;单向传输半双工通信&#xff1a;双向交替传输全双工通信&#xff1a;双向同时传输 带通调制 模拟信号是连续的信号&#xff0c;数字信号是离散的…

新Docker镜像代理地址!

针对近期国内Docker镜像代理地址不能用,新的替换地址&#xff1a; 除了阿里自己账号申请的镜像加速地址外&#xff0c;下面的也可以用 "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://dockerproxy.com" systemctl d…

搭建自己的DNS服务器

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

Unity 资源 之 风格化地形纹理(Stylized Terrain Textures)免费领取

风格化地形纹理&#xff1a;Stylized Terrain Textures 前言资源包内容领取兑换码 前言 亲爱的 Unity 游戏开发者们&#xff0c;我们自豪地为大家推荐最新的每周免费资源&#xff1a;风格化地形纹理&#xff01;这些令人惊叹的纹理将为你的游戏世界带来独特而引人入胜的视觉体…

走进高等学府,ATFX再度亮相雅尔穆克大学,共绘市场发展新蓝图

自2022年成功获得约旦证券委员会&#xff08;JSC&#xff09;颁发牌照后&#xff0c;ATFX植根约旦本土并于同年设立约旦办事处&#xff0c;不断深化与当地各界合作伙伴间的沟通协作&#xff0c;矢志为每一位客户打造优质、便捷、高效的投教服务体验。近日&#xff0c;ATFX再度登…

人工智能系统越来越擅长欺骗我们?

人工智能系统越来越擅长欺骗我们&#xff1f; 一波人工智能系统以他们没有被明确训练过的方式“欺骗”人类&#xff0c;通过为他们的行为提供不真实的解释&#xff0c;或者向人类用户隐瞒真相并误导他们以达到战略目的。 发表在《模式》(Patterns)杂志上的一篇综述论文总结了之…

JustAuth Illegal state xx问题

排查 起因 服务上线生产环境后使用飞书登录有些时候会登录失败,查看日志出现以上错误Illegal state [FEISHU],但是测试环境没有出现这个情况 排查 经过排查发现是JustAuth 报的错 分析出现原因 在JustAuth找到出现原因和解决方案 原文地址:异常相关问题 | JustAuth 异常…

Mat的lambda方式像素高效遍历(C++11)

Mat的lambda方式像素高效遍历&#xff08;C11&#xff09; 文章目录 Mat的lambda方式像素高效遍历&#xff08;C11&#xff09;前言一、Mat的lambda方式像素高效遍历二、代码实现总结 前言 图像遍历是图像处理中的经典操作&#xff0c;快速高效的进行像素遍历对性能的提升至关…

建构信任基石:揭秘Web3的去中心化信任体系

在传统的互联网时代&#xff0c;信任往往建立在中心化的机构和第三方平台之上&#xff0c;而这种中心化的信任体系往往面临着数据泄露、信息滥用等问题。然而&#xff0c;随着区块链技术的发展&#xff0c;Web3时代正在向我们展示一种全新的信任体系&#xff0c;即去中心化的信…

随到随学|2024泰迪智能科技暑期在线项目/集训营

在数字化转型的浪潮中&#xff0c;大数据和人工智能等前沿技术已成为推动经济发展和科技进步的关键动力。当前&#xff0c;全球各行各业都在积极推进数字化转型&#xff0c;不仅为经济增长注入新活力&#xff0c;也对人才市场结构产生了深刻影响&#xff0c;尤其是对数字化人才…

vCenter7.0安装部署

vCenter7.0安装部署 一、准备环境二、创建新的虚拟机1.创建虚拟机2.第3-5步可直接默认安装并同意许可协议。3.其他设置4.第一阶段直接点完成即可 三、进入第二阶段安装&#xff08;输入ip&#xff1a;5480进入安装界面&#xff09; 一、准备环境 准备一台exsi&#xff0c;并登…

《数学学习与研究》投稿难度大吗?

《数学学习与研究》杂志的投稿难度相对适中。 一方面&#xff0c;它作为一本有一定影响力的数学专业期刊&#xff0c;对稿件的质量有一定要求。论文需要具备一定的创新性、科学性和逻辑性&#xff0c;研究内容要具有一定的价值和深度。 另一方面&#xff0c;与一些核心期刊相…

Lab_ Exploiting a mass assignment vulnerability_实验室:利用大规模分配漏洞

使用 wiener:peter 登录 点击轻量级“l33t”皮夹克产品并将其添加到购物篮中。 去到购物车&#xff0c;点击下单&#xff0c;提示Not enough store credit for this purchase&#xff08;没有足够的商店信用用于此次购买&#xff09; 在Burp的HTTP历史记录中发现了API的请求…

QT creator c动态链接库的创建与调用

QT creator c动态链接库的创建与调用 QT5.15.2 1.创建dll项目 确保两类型选择正确 2.选择MinGW 64-bit 3.点击完成 pro文件参考&#xff1a; QT - guiTEMPLATE lib DEFINES QT_DLL_DEMO_LIBRARYCONFIG c17# You can make your code fail to compile if it uses deprecat…

网线制作(双绞线+水晶头)——T568B标准

参考视频&#xff1a;https://www.bilibili.com/video/BV1KQ4y1i7zP/ 1、使用剥线器 2、将线捋顺、排序、剪掉牵引线 记忆技巧 1.线序颜色整体是一浅一深 2.颜色顺序是黄、蓝、绿、棕 一个黄种人、从上向下看&#xff0c;分别看到的是蓝天、青草(绿)、泥土(棕色) 3.中间两根浅…

抗锯齿技术在AI绘画中的应用与意义

随着人工智能技术的飞速发展&#xff0c;AI绘画逐渐成为艺术创作领域的一大热点。然而&#xff0c;在数字绘画的过程中&#xff0c;画面的锯齿效应一直是影响作品质量的一个重要因素。抗锯齿技术的应用&#xff0c;有效地解决了这一问题&#xff0c;使得AI绘画作品更加细腻、真…

自然语言处理(NLP)—— 主题建模

1. 主题建模的概念 主题建模&#xff08;Topic Modeling&#xff09;是一种用于发现文档集合&#xff08;语料库&#xff09;中的主题&#xff08;或称为主题、议题、概念&#xff09;的统计模型。在自然语言处理和文本挖掘领域&#xff0c;主题建模是理解和提取大量文本数据隐…

小程序 UI 风格魅力非凡

小程序 UI 风格魅力非凡

MK米客方德 SD NAND与文件系统:技术解析与应用指南

随着数字存储技术的飞速发展&#xff0c;SD NAND(贴片式T卡&#xff09;已成为我们日常生活中不可或缺的存储工具。我们将深入探讨SD NAND的文件系统&#xff0c;特别是SD 3.0协议支持的文件系统类型&#xff0c;以及它们在实际应用中的作用和用户可能遇到的问题。 MK米客方德的…

跨境反向海淘系统:业务流程解析与未来发展展望

随着全球化的深入发展和互联网技术的飞速进步&#xff0c;跨境购物已经成为越来越多消费者日常生活中的一部分。在这个过程中&#xff0c;反向海淘系统以其独特的优势&#xff0c;逐渐崭露头角&#xff0c;成为跨境电商领域的新星。作为一名在跨境反向海淘系统业务中耕耘了10年…