递归删除文件,但不删除根目录

2023-11-08

        前提:最近在做开发的时候,要求删除文件夹中的子文件夹和文件,但不能删除根目录。

现在先把代码给贴上来,再分析分析代码。代码已经测试过,完成可以实现要求。

import java.io.*;
public class testFile618{

public static void main(String[] args){
	String path = "D:\\test1";
	File file = new File(path);
	deleteData(file);
}

static void deleteData(File file) {
		File[] deleteFiles = file.listFiles();
		if (deleteFiles.length == 0) {
			return;
		}
		else {
			for (int i = 0; i < deleteFiles.length; i++) {
				if (deleteFiles[i].isDirectory()) {
					deleteData(deleteFiles[i].getAbsoluteFile());
					deleteFiles[i].delete();
				}
				else {
					deleteFiles[i].delete();
				}
			}
		}
	}
}

在代码中,使用了递归,也必须要求递归来找到子文件夹中的文件,并删除。

        在这里首先要注意的是在java的file中的delete()方法只能删除文件和空的文件夹,如果文件夹中有文件则不能删除,在相关的API中有相应的介绍。

既然如此,那我们就先递归,找到子文件夹中的文件,再将子文件夹中的文件删除掉,然后再删除相应的子文件夹。在代码中,我们先用listFiles()方法列出根目录中的文件和子文件夹,并将这些文件和文件夹放到一个File[]数组中。然后在依次一个一个的判断是文件还是文件夹,如果是文件则直接用delete()方法删除,如果是文件夹则调用deleteData()方法进行递归,找到子文件夹中的文件。在这里,我只删除了根目录下的文件和子文件夹,这是怎么做到的呢?关键就在以下代码中:

if (deleteFiles[i].isDirectory()) {
					deleteData(deleteFiles[i].getAbsoluteFile());
					deleteFiles[i].delete();
				}

在代码中,进行递归调用,调用完了再删除子文件夹,这样就不会删除根目录了。

在本段代码中,实现的方式有很多,主要看我们需要处理的参数是什么样的了。我这里是处理File类型的参数。

在网络中也有很多相关的代码,大家也可以用来参考。实现的思路是差不多的。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

递归删除文件,但不删除根目录 的相关文章

  • [Vulkan教程] 一: 创建VkDevice

    这个系列的文章是写给对已有的D3D11和GL比较熟悉并理解多线程 资源暂存 同步等概念但想进一步了解它们是如何以Vulkan实现的读者 文章并不追求通俗易懂 里面有很多术语 为了解里面的晦涩内容 建议去阅读Vulkan规范或者更深度的教程
  • 【概率论与数理统计】期末不挂科复习笔记

    概率论与数理统计 期末不挂科复习笔记 只能说最好先看看老师的ppt 在看看猴博士就全懂了 第一章 条件概率 全概率 贝叶斯公式 1 无放回类题目 无放回 直接用C解 2 有放回类题目 有放回 使用 n1 n2 n1 n2 然后乘上每种的概率
  • private static final long serialVersionUID = 1L;是用来做什么的

    private static final long serialVersionUID 1L 是定义以一个序列号 java源码里有大量的类都有这么一个序列号 目的就是把java对象序列化而后进行保存 java的序列化机制式通过判断类的seri
  • IDEA上配置mysql

    IDEA是一个集成工具 它为很多工具提供了快速便捷的配置方式 配置mysql我们只需要添加Database就行了 Database一般是在右侧 找不到的话可以在View中里找到打开 如下图 添加数据库步骤 这里选上mysql 填写相应信息
  • JMeter界面字体大小修改

    1 找到jmeter所在目录 gt bin gt jmeter properties 搜索jsyntaxtextarea font size 去掉 把14改成18 2 修改右侧参数比例 jmeter所在目录 gt bin gt jmeter
  • Spring Boot 整合 Mybatis 实现 Druid 多数据源配置

    目录 1 多数据源的应 场景 2 数据库脚本 3 项目结构 4 代码 依赖 pom xml 配置文件 数据源配置类 实体类 sql映射文件 dao srvice controller 启动类 5 小节 6 事务问解决 1 多数据源的应 场景
  • C++-FFmpeg-1-VS2019-x264-fdk_aac-x265-pdb-QT5.14-makefile

    1 环境搭建 1 1VS2019 用的是控制台编译 1 2 msys2 模拟linux的命令和指令 2 源码编译与安装 2 1 x264 ffmpeg 编码用X264 2 2x265 ffmpeg 编码用X265 c 写的 msys2编译
  • 多边形的扫描转化算法

    多边形的扫描转化算法 python 实现 实验目的 实现从多边形顶点表示到点阵表示的转换 从多边形给定的边界出发 通过扫描线的方式求出位于其内部各个像素 从而达到对多边形填充的作用 算法思想 按扫描线顺序 计算扫描线与多边形的相交的交点 这
  • 竞赛 基于机器视觉的二维码识别检测 - opencv 二维码 识别检测 机器视觉

    文章目录 0 简介 1 二维码检测 2 算法实现流程 3 特征提取 4 特征分类 5 后处理 6 代码实现 5 最后 0 简介 优质竞赛项目系列 今天要分享的是 基于机器学习的二维码识别检测 opencv 二维码 识别检测 机器视觉 该项目
  • Linux性能测试工具-UnixBench--安装以及结果分析

    UnixBench unixbench是一个用于测试unix系统性能的工具 也是一个比较通用的benchmark 此测试的目的是对类Unix 系统提供一个基本的性能指示 很多测试用于系统性能的不同方面 这些测试的结果是一个指数值 index
  • pcb叠层设计及资料输出

    PCB叠层设计 一 4层板 方案1 top gnd pwr bottom 此方案也是最常见的 主要元器件和关键信号在top 方案2 top pwr gnd bottom 此方案是主要元器件放bottom 很少用 方案3 gnd s1 pwr
  • 区块链技术系列(1) - 数字签名

    导读 在现实社会中 签名作为签名者身份的一种证明 签名代表对签名文件的认可 不可抵赖 理论上签名是可信 不可伪造的 现在网络环境越来越广泛 有大量的信息通过网络传播 并且会保存在上面 这些电子数据显然无法人工签名 数字签名就孕育而生 本文将
  • SpringBoot常用注解

    前言 Spring Boot是由Pivotal团队提供的全新框架 其设计目的是用来简化新Spring应用的初始搭建以及开发过程 应用于快速应用开发领域 所需支持 Maven构建提供支持或Gradle 不懂Maven或者Gradle 的建议还
  • 基于全连接孪生网络的目标跟踪(siamese-fc)

    Fully Convolutional Siamese Networks for Object Tracking 这两年可以说deeplearning已经占领了visual object tracking这个领域 但是对于跟踪问题来说 这些
  • 在.NET Framework中的连接字符串ConnectionStrings属性

    在 NET Framework中 ConfigurationManager ConnectionStrings属性是用来访问在Visual Studio IDE应用程序配置文件中配置的数据库连接字符串的 每个连接字符串在Visual Stu
  • 建标库标准怎么导出pdf_保存和导出PDF文档,这款OCR文字识别软件能做到

    ABBYY FineReader 作为一款强大的OCR文字识别软件 如果能运用到大家的办公中 将能帮助大家将各种格式的PDF文档保存为新的PDF文档 PDF A格式文档 以及Microsoft Word Excel PPT等格式 在保存与导
  • spring 的@componentscan, @import, @configuration总结

    缝合怪 本人百度总结了几篇文章 对几篇文章进行汇总缝合总结 configuration 这个注解用来代替spring容器的xml配置文件 具体就是配置文件中的
  • VM VirtualBox 全屏模式 && 自动缩放模式 相互切换

    1 自动缩放模式 热键Host C 偶然一次机会 把虚拟机切换为了自动缩放模式 如下图 想要再切换为全屏模式 发现不知如何操作 后来折腾了一会儿 切换成功 以此备录一下 2 切换为全屏模式 热键Host F 切换为全屏模式的快捷键为Host
  • liveshare开发体验 vs_imgcook体验

    D2今年收费了 我所在创业公司没有报销 当然门票也不是什么大钱 无奈忙成狗错过了早鸟票 指望后面看看分享ppt 无意中看到D2官方流出的一个感兴趣的网址 说是 可以由视觉稿一键生成代码 https imgcook taobao org 创业
  • Kafka、RabbitMQ、RocketMQ 消息中间件的对比

    什么是消息队列 消息队列是在消息的传输过程中保存消息的容器 包含以下 3 元素 Producer 消息生产者 负责产生和发送消息到 Broker Broker 消息处理中心 负责消息存储 确认 重试等 一般其中会包含多个 Queue Con

随机推荐

  • 3DCAT实时云渲染助力VR虚拟现实迈向成熟

    近年来 虚拟现实 Virtual Reality VR 技术在市场上的应用越来越广泛 虚拟现实已成为一个热门的科技话题 相关数据显示 2019年至2021年 我国虚拟现实市场规模不断扩大 从2019年的282 8亿元增长至2021年的583
  • qt Model_View_Delegate 模型_视图_代理

    QT当中model view delegate 模型 视图 代理 此结构实现数据和界面的分离 Qt的模型 视图结构分为三部分 模型 model 视图 view 代理 Delegate 其中模型与数据源通信 并为其它部件提供接口 视图从模型中
  • CSS动画-Animation

    一 动画介绍 动画 animation 是CSS3中具有颠覆性的特征之 可通过设置多个节点来精确控制一个或一组动画常用来实现复杂的动画效果 相比较过渡 动画可以实现更多变化 更多控制的效果 二 动画组成 制作动画分为两个部分 keyfram
  • 立体匹配中的NCC,SAD,SSD算法

    常用的基于区域的局部匹配准则主要有图像序列中对应像素差的绝对值 SAD Sum of Absolute Differences 图像序列中对应像素差的平方和 SSD Sum of Squared Differences 图像的相关性 NCC
  • HSqlDB(java内置数据库)

    1 HSqlDB简介 HSQLDB是一款Java内置的数据库 非常适合在用于快速的测试和演示的Java程序中 无需独立安装数据库 HSQLDB有三种模式 1 Server 就像Mysql那样 2 In Process 又叫做 Standal
  • OpenCV颜色查找表

    Mat color imread flover jpeg Mat lut Mat zeros 256 1 CV 8UC3 for int i 0 i lt 256 i lut at
  • 《每日一题》NO.18:哪些因素会影响标准单元的延迟?

    芯司机 每日一题 会每天更新一道IC面试笔试题 其中有些题目已经被很多企业参考采用了哦 聪明的你快来挑战一下吧 今天是第18题 标准单元是RTL2GDS流程的基础 哪些因素会影响到标准单元的延迟呢 我们在工程项目中应该如何处理这些因素呢 快
  • springboot2

    springboot2 springboot2 核心功能 配置文件 web开发 数据访问 Junit5测试 actutor生产指标监控 springboot核心原理解析 springboot2场景整合 虚拟化技术 安全控制 缓存技术 消息中
  • 什么是SQL注入式攻击,如何去防范SQL注入式攻击

    一 SQL注入式攻击 1 所谓SQL注入式攻击 就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串 欺骗服务器执行恶意的SQL命令 2 在某些表单中 用户输入的内容直接用来构造 或者影响 动态SQL命令 或作为存储过程的输
  • 测试用例、缺陷报告示例子

    测试用例 用例标题的作用 让人更清晰直观的查看 前置条件和测试步骤 测试步骤是在前置条件的基础上进行的 合格测试用例标题 缺陷 缺陷的介绍 需求 规格 说明书中明确要求的功能 缺失 少功能 需求 规格 说明书中致命不应该出现的错误 功能错误
  • 【项目实战】C/C++语言带你实现:围棋游戏丨详细逻辑+核心源码

    每天一个编程小项目 提升你的编程能力 游戏介绍 下围棋的程序 实现了界面切换 选择路数 和围棋规则 也实现了点目功能 不过只有当所有死子都被提走才能点目 不然不准确 操作方法 鼠标操作 游戏截图 编译环境 VisualStudio2019
  • 看完这篇 教你玩转渗透测试靶机Vulnhub——The Planets:Mercury

    Vulnhub靶机The Planets Mercury渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 漏洞发现 SSH登入 CVE 2021 4034漏洞提权 获
  • CCAI 2017

    阅读原文请点击 摘要 2017 中国人工智能大会 CCAI 2017 在杭州国际会议中心盛大召开 CCAI发起人 中国科学院院士 中国人工智能学会副理事长谭铁牛院士在大会首日主会场进行了现场致辞 7月22日 23日的 2017 中国人工智能
  • 你必须收藏的Github技巧

    一秒钟把Github项目变成前端网站 GitHub Pages大家可能都知道 常用的做法 是建立一个gh pages的分支 通过setting里的设置的GitHub Pages模块可以自动创建该项目的网站 这里经常遇到的痛点是 master
  • 详细解析赋值、浅拷贝和深拷贝的区别

    一 赋值 Copy 赋值是将某一数值或对象赋给某个变量的过程 分为下面 2 部分 基本数据类型 赋值 赋值之后两个变量互不影响 引用数据类型 赋址 两个变量具有相同的引用 指向同一个对象 相互之间有影响 对基本类型进行赋值操作 两个变量互不
  • 将gitlab的代码仓库实时备份到其他服务器

    首先 这个题目是不完全正确的 因为经过各种尝试 gitlab的仓库直接备份到远端 拷贝回来后是不能使用的 表现为gitlab中能看到项目 但每个项目的内容都无法读取出来 页面上会有报错提示 所以 最终采用的是实时备份gitlab的备份库 最
  • 基于TCN时间卷积网络(含因果膨胀卷积)的单特征输入股票预测项目实战(pytorch)(一维特征)【有数据集和代码,可运行】

    一 项目简介 股票预测是金融领域中的重要问题 通过对历史股票数据的分析和建模 我们可以尝试预测未来股票的价格趋势 为投资决策提供参考 本项目是基于PyTorch深度学习框架实现一个使用时间卷积网络 TCN Temporal Convolut
  • 把request对象中的请求参数封装到bean中/生成UUID

    package me gacl util import java util Enumeration import java util UUID import javax servlet http HttpServletRequest imp
  • 第七章 结构化设计

    第七章 结构化设计 1 软件结构图的形态特征有哪些指标 各有什么含义 1 深度 指结构图控制的层次 即模块的层数 2 宽度 指一层中最大的模块个数 3 扇出 指一个模块直接下属模块的个数 如模块M的扇出为3 4 扇入 指一个模块直接上属模块
  • 递归删除文件,但不删除根目录

    前提 最近在做开发的时候 要求删除文件夹中的子文件夹和文件 但不能删除根目录 现在先把代码给贴上来 再分析分析代码 代码已经测试过 完成可以实现要求 import java io public class testFile618 publi