java如何删除非空文件夹

 更新时间:2024年06月14日 10:29:44   作者:luffy5459  
这篇文章主要介绍了java如何删除非空文件夹问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

java删除非空文件夹

java中删除文件和空文件夹很简单,直接调用File api ,file.delete()就可以删除文件或者空文件夹本身。

但是如果是非空文件夹,这个方法就会失败,就像在linux下我们使用命令rm删除非空文件夹一样,它会提示文件夹不为空,我们需要加上-r参数强制递归删除,才能将这个文件夹删除。

java中删除非空文件夹也类似,如果要删除,必须要连带文件夹中的内容一起删除,所以这里也需要递归删除。

思路很简单

因为我们删除的是文件夹,所以这里先列出文件夹中的文件,如果是文件直接删除,如果是文件夹,继续递归调用删除方法,最后还要将空文件夹本身删除。

show me the code:

package com.xxx.oop;
import java.io.File;
public class Hello {
 
    public static void deleteDir(String path){
        File file = new File(path);
        File[] list = file.listFiles();
        for(File f:list){
            if(f.isDirectory()){
                deleteDir(f.getPath());
            }else{
                f.delete();
            }
        }
        boolean deleted = file.delete();
        System.out.println(deleted);
    }
 
    public static void main(String[] args) {
        String path = "C:\\Users\\buejee\\Desktop\\test";
        deleteDir(path);
    }
}

这个代码本身没有难度,就是一个简单的递归调用,但是却很管用。

这种方式,不管删除空文件夹还是非空文件夹都好使。

递归删除非空文件夹(目录)

Java 对File类  提供了一个删除文件 delete(); 的方法

但是这个方法只对 文件或者 空目录有效,对非空目录是无法进行删除的

这个时候我们要 删除非空目录 可能就会用到 递归的方法:

private static void delDirectory(File f) {
        //判断是否目录
        if (f.isDirectory()) {
            //是目录,判断是否有子文件
            if (f.listFiles().length>0) {
                for (File file : f.listFiles()) {
                    //有子文件再次调用本方法
                    delDirectory(file);
                }
            }else {
                //无子文件直接删除
                f.delete();
            }
        }
        //删除空目录 或 文件
        f.delete();
    }

使用main方法调用:

public static void main(String[] args) {
        File f = new File("C:\\Users\\jacktu\\Desktop\\test");
        delDirectory(f);
    }

成功删除桌面的 test 文件夹  --这里就不上图了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Netty启动流程注册多路复用源码解析

    Netty启动流程注册多路复用源码解析

    这篇文章主要介绍了Netty启动流程注册多路复用源码分析,继续分析channel是如何注册到selector中的,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2022-03-03
  • java中List数组用逗号分隔开转成字符串2种方法

    java中List数组用逗号分隔开转成字符串2种方法

    在我们日常开发中,在前后端交互的时候会遇到多个id或其他字段存放到一个字段中,这时我们会遇到一个List(集合)---->String(单个字段),这篇文章主要给大家介绍了关于java中List数组用逗号分隔开转成字符串的2种方法,需要的朋友可以参考下
    2023-10-10
  • 使用GSON库将Java中的map键值对应结构对象转换为JSON

    使用GSON库将Java中的map键值对应结构对象转换为JSON

    GSON是由Google开发并开源的实现Java对象与JSON之间相互转换功能的类库,这里我们来看一下使用GSON库将Java中的map键值对应结构对象转换为JSON的示例:
    2016-06-06
  • Java 完美判断中文字符的方法

    Java 完美判断中文字符的方法

    Java判断一个字符串是否有中文一般情况是利用Unicode编码正则来做判断,但是其实这个区间来判断中文不是非常精确,以下是比较完善的判断方法
    2013-02-02
  • Spring Boot如何获取maven打包时间

    Spring Boot如何获取maven打包时间

    这篇文章主要介绍了Spring Boot如何获取maven打包时间,首先引入maven打包插件,本文分步骤给大家介绍的非常详细,需要的朋友参考下吧
    2024-03-03
  • 详解Java 打印堆栈的几种方法

    详解Java 打印堆栈的几种方法

    本篇文章主要介绍了Java 打印堆栈的几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • MyBatis-Plus代码生成器(AutoGenerator)用法及说明

    MyBatis-Plus代码生成器(AutoGenerator)用法及说明

    MyBatis-Plus代码生成器AutoGenerator是MyBatis-Plus提供提供的高效工具,能根据数据库表结构一键生成Entity、Mapper、MapperXML、Service和Controller代码,大幅提高开发效率,本文详细介绍了其依赖准备、核心配置体系(重点介绍了FastD)和具体案例
    2026-05-05
  • 使用SpringBoot找不到Mapper的Bean问题及解决

    使用SpringBoot找不到Mapper的Bean问题及解决

    这篇文章主要介绍了使用SpringBoot找不到Mapper的Bean问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-04-04
  • Kotlin 开发环境详解及简单实例

    Kotlin 开发环境详解及简单实例

    这篇文章主要介绍了 Kotlin 开发环境详解及简单实例的相关资料,需要的朋友可以参考下
    2017-06-06
  • IDEA去除xml文件的黄色背景的操作步骤

    IDEA去除xml文件的黄色背景的操作步骤

    这篇文章主要介绍了IDEA去除xml文件的黄色背景的方法,本文通过图文结合的方式给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,感兴趣的朋友可以参考下
    2023-12-12

最新评论