版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40990836/article/details/78956114
一、删除目标文件
public class File07{
// ① 获取目标文件
// ② 删除目标文件
// ③ 验证是否删除成功
public static void main(String[] args){
File target = new File("file05");
}
// 非空文件夹不能直接删除
// 需求:如何一次性删除非空文件夹
private static boolean removeTargetFoleder(File file){
// 如果参数为null 需要做安全处理
if(file == null){
return false;
}
// 文件如果不存在 可以直接返回false
if(!file.exists()){
return false;
}
// 如果是文件 或者 空文件夹,可以直接做 delete() 操作
if(file.isFile() || file.list().length == 0){
return file.delete();
}
// 递归处理
// 处理所有子文件以及文件夹
try{
for(File f : file.listFile()){
// 遇到文件夹 优先递归处理
if(f.isDirectory()){
removeTargetFolder(f);
}
// 如果不是文件夹 可以直接删除
// 如果是文件夹 也是处理后的空文件夹 也可以直接删除
f.delete()
}
}catch(Exception e){
// 如果删除大量文件和文件夹 处理过程中可能出现 删除失败 或者 取消删除情况
return false;
}
return file.delete();
}
}
二、过滤器
// 过滤器:获取满足条件的目标文件
// File 相关过滤器:
// list(FilenameFilter)
// listFile(FilenameFilter)
// listFile(FileFilter filter)
// 获取过滤器过滤后的满足条件的File(String)数组
public class File08{
public static void man(String[] args){
// ① 获取目标文件
File target = new File("file04");
// ② 获取目标文件的子目录满足条件的以及文件()
String[] names = target.list();
// 1).生成条件(过滤器对象)
// 2).获取满足条件的目标(过滤后的目标)
File[] targetList = target.listFiles(new FilenameFilter(){
// 参数列表
// dir:file04 对应的file 类型对象
// name : file04 文件夹下所有一级文件(夹)的文件名
public boolean accept(File dir,String name){
// 如果name 的后缀等于.java 那么 过滤出来
if(name.endsWith(".java")){
return true;
}
return false;
}
})
// ③ 遍历打印
for(File file : targetList){
System.out.println(file.getName());
)
}
}