在Java中,递归删除文件及目录是一个常见的操作,特别是在需要清理整个目录结构时。
假设存放的图片路径为:/home/img/20250917/图片.png
时间目录有很多,如果我要删除时间目录里面的最后一张图片的同时也要删除时间的目录。
这个时候可以使用递归删除。
1、递归删除文件工具类。
public class DeleteFileUtil {
//递归删除-当文件被删除后,再判断其父目录是否还有子文件,没有则删除 最顶级的目录parentPath,不能删除
public static boolean deleteDiy(String absoluteFilePath, String parentPath) {
if(parentPath.equals(absoluteFilePath)) return true;//最顶级的目录parentPath,不能删除
File file = new File(absoluteFilePath);
if (!file.exists()) {
return false;
}
boolean delete = file.delete();
if(delete) deleteDiy(file.getParentFile().getAbsolutePath(),parentPath);
return delete;
}
}
2、调用工具类。
删除 /home/img/20250917/图片.png 文件,保留最大目录 /home/img
DeleteFileUtil.deleteDiy("/home/img/20250917/图片.png", "/home/img");