版权声明:本文为博主原创文章,但是欢迎转载! https://blog.csdn.net/yancola/article/details/75452739
删除文件夹下的所有文件和子文件夹
背景
这道题是我前几天遇到的一道面试题,遗憾当时没做出来,今天看了传智播客风清扬老师的视频,正好讲到了这道题,所以把它写在这分享给大家。
思路
由于delete方法只能删除文件和空目录,当目录不为空时不能使用delete进行删除。所以自然想到用递归的方法进行删除,即:
判断当前File对象是是否是文件夹,不是则删除之,否则对其下的所有文件和子文件夹进行同样的判断,最后删除这个文件夹(此时这个文件夹肯定是空文件夹)。
代码
import java.io.File;
public class FileDeleteDemo {
public static void main(String[] args) {
// 封装目录
File srcFolder = new File("Folder");
// 递归实现
deleteFolder(srcFolder);
}
private static void deleteFolder(File srcFolder) {
// TODO Auto-generated method stub
// 获取该目录下所有文件和文件夹的File数组
File[] fileArray = srcFolder.listFiles();
// 如果fileArray数组不为空才能使用增强for
if (fileArray != null) {
// 遍历该数组获得每一个File对象
for (File file : fileArray) {
// 判断该file对象是否是文件夹
if (file.isDirectory()) {
deleteFolder(file);
} else {
System.out.println(file.getName() + "---" + file.delete());
}
}
System.out
.println(srcFolder.getName() + "---" + srcFolder.delete());
}
}
}