注意:在删除文件夹和文件的时候,使用递归删除,注意要设置终止条件。否则容易出现问题;
1,栈内存溢出问题
2,文件删掉了,但是文件夹却有时候删不掉,但是有时候删的掉问题。
下面是经过整理的正确代码:
import java.io.File;
/**
* @Description: 删除文件夹以及文件内容
* @Author: zhangqingbiao 楚天龙
* @Date: 2021/3/20 15:39
*/
public class FileTest {
public static void main(String[] args) throws Exception {
File file = new File("C:\\Users\\Administrator\\Desktop\\demo\\dfe\\新建文件夹");//要删除的文件夹
deleteDir(file);
}
private static boolean deleteDir(File file) {
// 判断是否是文件夹
if (file.isDirectory()) {
// 读取文件夹里的文件或文件夹
File[] files = file.listFiles();
// 再取出文件,进行删除,如果是文件夹,则进行递归重复上面的步骤
// 第一种办法:推荐,用遍历方式进行删除,亲测有效
for (File f : files) {
System.out.println(f);
boolean b = deleteDir(f);
if (!b) {
deleteDir(f);
}
}
/*
// 第二种方法:不推荐,也可以用,但是会增加内存,影响服务器性能 ,亲测有效
for (int i = 0; i < files.length; i++) {
boolean b = deleteDir(files[i]);
if (!b) {
deleteDir(files[i]);
}
}
*/
}
// 最后一步进行删除
System.out.println(file);
boolean delete = file.delete();
return delete;
}
}