새 테스트 디렉터리를 만들고 여기에 새 테스트 파일과 테스트 디렉터리를 만듭니다. 파일 트리는 다음과 같습니다.
코드 작성 :
클래스 삭제 :
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
파일 삭제 순서는 파일 트리의 사후 순회 순서 임을 알 수 있습니다.