Recursively delete the folder and all files in it (simulate the function of rm -fr)

Create a new test directory, and create a new test file and test directory in it. The file tree is as follows:
Insert picture description here
Write code:
Delete class:

package com.cao.demo.delete;

import java.io.File;

/**
 * 作者:曹浩东
 * 实现递归 rm -fr 的功能
 */
public class Delete {
    
    
    public void recursionDelete(String path) {
    
    
        File file = new File(path);//根据传进来的路径path实例化一个File对象
        File[] files = file.listFiles();//返回 path路径下的所有文件 的文件对象
        String fileName;//用于存储文件名
        //对 files文件对象数组 遍历
        for (int i = 0; i < files.length; i++) {
    
    
            fileName = files[i].getName();
            //判断是否是文件夹
            if (files[i].isDirectory()) {
    
    
                //如果该目录下为空,那么该目录可以删除成功,并返回true
                if (files[i].delete()) {
    
    
                    System.out.println(fileName + "已经被删除...");
                } else {
    
    
                    //若删除不成功,说明该目录下有文件存在,则递归调用本方法,参数为该目录
                    recursionDelete(files[i].getPath());
                }
            }
            //判断是否为文件,是则直接删除
            if (files[i].isFile()) {
    
    
                files[i].delete();
                System.out.println(fileName + "已经被删除...");
            }
        }
        //最后删除path路径所指向的目录(根目录)
        System.out.print(file.getName());
        file.delete();
        System.out.println("已经被删除...");
    }
}

Test class:

package com.cao.demo.delete;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        Delete d=new Delete();
        d.recursionDelete("C:\\iweb\\1");
    }
}
C:\Java\jdk1.8.0_181\bin\java.exe "...
1_1_1已经被删除...
1_1_2.txt已经被删除...
1_1已经被删除...
1_2_1已经被删除...
1_2已经被删除...
1_3.txt已经被删除...
1_4.txt已经被删除...
1已经被删除...

Process finished with exit code 0

It can be observed that the deletion order of files is the post-order traversal order of the file tree
Insert picture description here

Guess you like

Origin blog.csdn.net/qq_44371305/article/details/113616406