众所周知,File类中的delete是无法直接删除有目录的文件夹的。
删除文件时
- 文件为空 : 直接删除
- 不为空 : 无法删除(必须将其变为空文件才能删除)
- 不存在 : 返回false
便于理解
删除有目录的文件夹
当删除有目录的文件夹时必须将其变为空文件<=>将其内的文件删除
但删除其内的文件时又要考虑该文件是否有目录…
这就变成了一道简单的算法题。
使用递归可以轻松解决。
比如解决删除
代码如下:D盘中file文件夹中的my文件夹
路径:D:/file/my
可以看到我的my文件夹下是有很多文件的,文件下面还有文件,文件下面的下面还有文件…
如视频:
QQ录屏20220508162009
主方法:
import java.io.File;
public class FilePrictice {
public static void main(String[] args){
File file=new File("D:/file/my");
Operator.deleteFile(file);
}
}
调用的方法: Operator.deleteFile():
import java.io.File;
public class Operator {
public static void deleteFile(File file) {
if(!file.exists()){//判断文件是否存在
System.out.println("文件不存在!");
return ;
}else{
File files[]=file.listFiles();
for(File newfile:files){//遍历文件夹下的目录
if(newfile.isFile()){//如果是文件而不是文件夹==>可直接删除
System.out.println("已删除"+newfile.getName());
newfile.delete();
}else{
deleteFile(newfile);//是文件夹,递归调用方法
}
}
System.out.println("已删除"+file.getName());
file.delete();
}
}
}
运行输出如图:
可以看到my文件夹已经删除了!