File类的删除文件夹(有目录,无目录)

本文介绍了如何使用Java的File类结合递归算法删除包含多个层级的文件夹。通过检查文件是否存在,遍历文件夹内容并区分文件和子文件夹,逐个删除文件或递归删除子文件夹,最终实现整个文件夹的删除。提供的代码示例展示了具体实现过程。

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

众所周知,File类中的delete是无法直接删除有目录的文件夹的。
删除文件时

  • 文件为空 : 直接删除
  • 不为空 : 无法删除(必须将其变为空文件才能删除)
  • 不存在 : 返回false

便于理解
在这里插入图片描述


删除有目录的文件夹

当删除有目录的文件夹时必须将其变为空文件<=>将其内的文件删除
但删除其内的文件时又要考虑该文件是否有目录…
这就变成了一道简单的算法题。
使用递归可以轻松解决。
比如解决删除
代码如下:D盘中file文件夹中的my文件夹
路径:D:/file/my
在这里插入图片描述
可以看到我的my文件夹下是有很多文件的,文件下面还有文件,文件下面的下面还有文件…

如视频:

QQ录屏20220508162009

主方法:

import java.io.File;

public class FilePrictice {
    public static void main(String[] args){
        File file=new File("D:/file/my");
        Operator.deleteFile(file);
    }
}

调用的方法: Operator.deleteFile():


import java.io.File;

public class Operator {
    public static void deleteFile(File file) {
        if(!file.exists()){//判断文件是否存在
            System.out.println("文件不存在!");
            return ;
        }else{
            File files[]=file.listFiles();
            for(File newfile:files){//遍历文件夹下的目录
                if(newfile.isFile()){//如果是文件而不是文件夹==>可直接删除
                    System.out.println("已删除"+newfile.getName());
                   newfile.delete();
                }else{
                    deleteFile(newfile);//是文件夹,递归调用方法
                }
            }
            System.out.println("已删除"+file.getName());
            file.delete();

        }
    }
}

运行输出如图:
在这里插入图片描述

在这里插入图片描述
可以看到my文件夹已经删除了!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值