众所周知,File
类的delete()
能删除空目录与非目录文档,但无法删除目录下有文件的目录。所以想写一个删除此类目录的方法
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("E:/Test");
deleteFile(file);
}
public static void deleteFile(File directory){
if (!directory.isDirectory()){//判断是否是目录,不是目录直接删除,防止第一次传入的不是目录。
directory.delete();
return;
}
File[] files = directory.listFiles();//是目录则打印改目录下的所有文件
for (File file : files){//加强循环遍历目录下的所有文件
if(file.isDirectory()){//是目录则进入递归
deleteFile(file);
}else {//否之则直接删除
file.delete();
}
}
directory.delete();//最后把传入的文件删除
}
}
总体思路,则是利用递归思路先从子文件下手,最后再删除根目录。
那么根据这个思路也能够做到类似的事。比如删除目录下的所有.txt文件:
import java.io.File;
public class Test {
public static void main(String[] args) {
File file = new File("E:/Test");
deleteTxt(file);
}
public static void deleteTxt(File directory){//这里相比少了判断,所以要保证传入的是目录
File[] files = directory.listFiles();
for (File file : files){
if (file.isDirectory()){
deleteTxt(file);
continue;
}
String fileName = file.getName();
if ((fileName.indexOf(".txt")) != -1){
file.delete();
}
}
}
}
file.delete();
}
}
}
}