删除 文件File流程
1.获取目标文件
2.删除目标文件
3.验证是否删除成功
public class File01{
public static void main(String[] args){
File target = new File("222"); // 获取目标文件222
if(target ==null){ //目标文件存在是空的
return false;
}
if(!target.exists()){ //目标文件不存在
return false;
}
if(target.isFile()){ //空文件夹直接删除
return target.delete();
}
if(target.list().length ==0 ){ //空文件直接删除
return target.delete();
}
for(File:folder.listFiles()){ 通过遍历文件夹找到文件夹中所有的文件以及文件夹
if(f.isDirectory()){
removeTargetFolder(f);桌椅删除文件夹
f.delete();
}
}
System.out.println(”文件夹已删除“);
return target.delete();
}
}
下面我们来优化一下我们的代码
public class File02{
public static void 面(String[]args){
File target = new File(”222“);//获取目标文件
boolean result = removeTargetFolder(target);//判断目标文件 是否删除
if(result)
System.out.println(”删除成功“);
else
System.out.println(”删除失败“);
//结论:文件以及空文件夹可以直接删除,且删除方式相同
//非空文件不可以直接删除
}
下面我们封装一个功能。
上面已经调用了我们的功能。
private static boolean removeTargetFolder(File folder){
//如果参数folder 为 null , 需要做安全处理 返回false
if(folder ==null)
return false;
//文件不存在可以直接返回 false
if(!folder.exists())
return false;
//如果文件或空文件夹 , 可以直接做delete()操作
//且操作结果可以直接作为方法结果返回
if(folder.isFile())
return folder.delete();
if(folder.list().length ==0)
return folder.delete();
//递归处理
try{
for(File f :folder.listFiles()){
//遇到文件夹优先(递归)处理
if(f.isDirectory()){
removeTargetFolder(f);
//逻辑到达这里时 , 如果是文件 ,可以直接删除
//如果是文件夹yes处理后的空文件夹,亦可以直接删除
f.delete();
}
}catch (Exception e){
//删除是一个漫长的过程, 处理可能出现的不可靠删除失败情况。
return false;
}
System.out.println(”删除成功“);
return folder.delete();
}
}