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

众所周知,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文件夹已经删除了!


版权声明:本文为weixin_62995761原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。