폴더와 그 안의 모든 파일을 재귀 적으로 삭제 (rm -fr의 기능 시뮬레이션)

새 테스트 디렉터리를 만들고 여기에 새 테스트 파일과 테스트 디렉터리를 만듭니다. 파일 트리는 다음과 같습니다.
여기에 사진 설명 삽입
코드 작성 :
클래스 삭제 :

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("已经被删除...");
    }
}

테스트 클래스 :

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

파일 삭제 순서는 파일 트리의 사후 순회 순서 임을 알 수 있습니다.
여기에 사진 설명 삽입

추천

출처blog.csdn.net/qq_44371305/article/details/113616406