综合案例_文件搜索、 FileFilter过滤器的原理和使用

综合案例_文件搜索

我们遍历F:盘下所以的文件.java文件

案例:

  

public static void main(String[] args) {
File f = new File("F:\\");

filename(f);
}


public static void filename(File file){
if (file.exists()) {
File[] files = file.listFiles();
for (File file1 : files) {
if (file1.isDirectory()) {
File[] files1 = file1.listFiles();
if (files1!=null){
filename(file1);
}
} else {
String s = file1.toString();
boolean b = s.endsWith(".java");
if (b){
System.out.println(file1);
}
}
}
} else {
System.out.println("文件不存在");
}
}
}
  File[] files1 = file1.listFiles();
if (files1!=null){
filename(file1);
}

我们需要看一下,这个盘下的空文件 

然后咱遍历出来

看结果:

  

 

 FileFilter过滤器的原理和使用

  我们可以使用两个和ListFiles重载的方法,方法的参数传递的就是过滤器

  在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器

  File[] listFiles(FileFileter fileer)

  用于抽象路径名(用于抽象路劲名(File对象)的过滤器)

    作用:用来过滤文件(File 对象)

   抽象方法:过来过滤文件的方法

   accept 测试指定抽象路劲名是应该包含在某个路劲的列表中   

    参数:File pathame :使用listFiles方法遍历目录,得到每一个文件对象 

  FileenameFilter接口:实现此接口的类实例可用于过滤文件名

    作用:用于过滤文件名称

    抽象方法:用来过滤文件的方法  

    参数:

      File dir:构造方法中传递的被遍历目录

      String name:使用ListFiles方法遍历目录,获取每一个文件/文件夹的名称

 

 案例:

    创建过滤器

public class FileImpl implements FileFilter {

@Override
public boolean accept(java.io.File pathname) {
if (pathname.isDirectory()){
return true;
}
}
}
    public static void main(String[] args) {
File file = new File("F:\\");
filename(file);
}



public static void filename(File file) {
if (file.exists()){
File[] files = file.listFiles(new FileImpl()); //传递过滤器对象
for (File file1 : files) {
if (file1.isDirectory()){
File[] files1 = file1.listFiles();
if (files1!=null){
filename(file1);
}
}else{
String s = file1.toString();
boolean b = s.endsWith(".java");
if (b){
System.out.println(file1);
}
}
}
}
}
}

 

  图解:

 

posted @ 2022-07-14 10:13  一位程序袁  阅读(78)  评论(0编辑  收藏  举报