如题,指定路径下,过滤关键字,打印出文件的全路径
用到的方法:
代码展示:
public class Demo {
/*
* @param path:指定路径
* @param filter:过滤关键词
*/
public static void searchFile(String path, String filter) {
File file = new File(path); //新建一个file实例
if(!file.exists()){ //如果文件不存在,直接返回
return;
}
if(file.isFile() && file.getName().contains(filter)){ //如果当前路径表示的是标准文件 并且 文件的名字包含过滤关键字filter
System.out.println(file.getAbsolutePath()); //打印出文件的全路径
return;
}
if(file.isDirectory()){ //如果当前路径是一个目录,调用searchDir函数
searchDir(file,filter);
}
}
public static void searchDir(File file, String filter){
FilenameFilter filenameFilter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) { //重写FilenameFilter的accept方法:测试指定文件是否应该包含在某一文件列表中
File file1 = new File(dir,name);
return file1.isFile() && !file.isHidden(); //如果路径下的文件是标准文件 并且 不是隐藏文件,则返回
}
};
File[] list = file.listFiles(filenameFilter); //返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录
for (int i = 0; i < list.length ; i++) { //遍历当前数组
File path1 = list[i];
if(path1.getName().contains(filter)){ //当前的文件名包含过滤的关键字
System.out.println(path1.getAbsolutePath()); //打印出当前的全路径
}
FilenameFilter dirFilter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File file1 = new File(dir,name);
return file1.isDirectory(); //过滤带关键字的目录
}
};
File[] dir = file.listFiles(dirFilter);
for (int j = 0; j < dir.length; j++) {
File file1 = dir[j];
searchDir(file1,filter); //迭代
}
}
}
public static void main(String[] args) {
String path = "E:\\JDK\\jre\\bin";
searchFile(path,"java");
}
}
运行结果:
(打印过滤出的“java”关键字)