众所周知,File的delete()只能删除空的文件夹,
所以若想删除一个含有很多文件和文件夹的文件夹该怎么办呢……怎么办呢……么办呢……办呢……
//1.定义一个方法,接收File对象
private static void deleteDir(File src) {
//先删掉这个文件夹里面所有的内容.
//递归 方法在方法体中自己调用自己.
//2.遍历这个File对象,获取它下边的每个文件和文件夹对象
File[] files = src.listFiles();
//3.判断当前遍历到的File对象是文件还是文件夹
for (File file : files) {
//4.如果是文件,直接删除
if(file.isFile()){
file.delete();
}else{
//5.如果是文件夹,递归调用自己,将当前遍历到的File对象当做参数传递
deleteDir(file);//参数一定要是src文件夹里面的文件夹File对象
}
}
//6.参数传递过来的文件夹File对象已经处理完成,最后直接删除这个空文件夹
src.delete();
}
}
然后谈谈俺自己的理解:
1.先将File对象中的每一个文件和文件夹都遍历到数组中,
2.然后for循环遍历每一个元素,如果是文件,就删除,
3.如果是文件夹,就递归调用这个方法,对传入的文件夹对象又进行一次遍历,获取其中的每一个文件和文件夹,如果是文件就删除,如果是文件夹就继续重复上述操作,
4.当文件都删除以后,程序返回之前递归调用的地方,然后继续向下执行,跳出for循环,删除当前文件夹。