实现搜索功能
要求:
1、指定起始路径下包含指定词的所有文件(非隐藏文件)
2、打印出全路径
path:指定路径
filter:过滤关键词
思路: 1、判断路径合法性,是否存在,必须是目录、是文件 2、当前路径下可能包含有目录和文件,文件直接判断,目录则需要继续深入,进行第二步判断(递归处理) 3、文件则通过过滤关键字匹配是否满足要求
判断合法性,判断是文件还是目录:
public static void searchFile(String path,String filter) {
File file = new File(path);
if (!file.exists()) {
System.out.println("路径不存在");
return;
}
if (file.isFile()) {
if(file.getName().contains(filter)){ //判断是否含有指定词
System.out.println(file.getAbsolutePath()); //有则打印绝对路径
}
}else{ //是目录
filterFile(file,filter);
}
}
递归方法,处理目录:
private static void filterFile(File file,String filter) {
//是目录,获取其二级目录中所有非隐藏文件
File[] files = file.listFiles(new FilenameFilter() {
@Override
//把文件夹中的隐藏文件过滤掉
public boolean accept(File dir, String name) {
return !(new File(dir,name).isHidden());
}
});
for(File f: files){
if (f.isFile()) {//文件
if(f.getName().contains(filter)){
System.out.println(f.getAbsolutePath());
}
}else{//目录
filterFile(f,filter);
}
}
}
public static void main(String[] args) {
String pathName = "D:/JAVA项目/java";
searchFile(pathName,"Test");
}