题目:
实现将指定目录中的所有内容删除,包含子目录中的内容都要全部删除。
思路:
使用递归思想即可,先列出目录下所有文件信息,如果是文件则直接删除,如果是文件夹则递归。具体代码如下。
视频:https://www.bilibili.com/video/BV11p4y1H7xe
package step1_task4_homework;
import java.io.File;
public class RemoveAllTest {
/**
* 删除目录下所有文件
* @param f 待删除目录
* @return 是否删除成功
*/
public static Boolean removeFile(File f){
// 判断输入目录是否存在
if (f.exists()){
// 获取改目录下所有文件信息
File[] files = f.listFiles();
// 存在,遍历该目录下的文件及文件夹
for (File f1:files){
// 如果是文件
if (f1.isFile()){
// 删除该文件
f1.delete();
System.out.println("删除"+ f1.getAbsolutePath());
}
// 如果是文件夹,则递归
if (f1.isDirectory()){
removeFile(f1);
System.out.println("删除"+ f1.getAbsolutePath());
}
}
// 删除最外面文件夹
f.delete();
return true;
}else {
System.out.println("待删除目录不存在,请输入正确目录!");
return false;
}
}
public static void main(String[] args) {
// 待删除文件路径
String delPath = "D:\\tmp\\1";
Boolean f = removeFile(new File(delPath));
// 递归方法里没法打印最外面一层文件夹,所以最外面一层单独拿出来打印
if (f){
System.out.println("删除" + delPath);
}
}
}