File过滤器

File过滤器

1、listFiles(FileFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

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

listFiles会做的事:

a:如果里面不传FileFilter过滤器,就会返回抽象路径名数组

b:如果里面传FileFilter过滤器,那么就返回通过过滤器的返回值为true的元素组成的数组。(即符合过滤器的规则。)

/**
* @program: intellij idea
* @description:1、`listFiles(FileFilter filter)` 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
*2、`listFiles(FilenameFilter filter)` 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
* @author: lixy
* @create: 2020-05-07 12:42
**/
public class FileFilterImpl implements FileFilter {

  @Override
  public boolean accept(File pathname) {
      return pathname.isFile() && pathname.getName().endsWith(".java");
  }
}
public class Demo02Main {
  public static void main(String[] args) {
      bl(new File("F:\intellij idea\day11\src\com\lixy"));
  }
  private static void bl(File dir) {
      File[] files = dir.listFiles(new FileFilterImpl());
      for (File file : files) {
              System.out.println(file);
      }
  }
}
结果:
F:intellij ideaday11srccomlixyFileMethod.java
F:intellij ideaday11srccomlixyMyFile.java

public class Demo03Main {
  public static void main(String[] args) {
      bl(new File("F:\intellij idea\day11\src\com\lixy"));
  }
  private static void bl(File dir) {
      File[] files = dir.listFiles(new FileFilter() {//匿名内部类,
          @Override
          public boolean accept(File pathname) {
              return pathname.isFile() && pathname.getName().endsWith(".java");
          }
      });
      for (File file : files) {
              System.out.println(file);
      }
  }
}

public class Demo04Main {
  public static void main(String[] args) {
      bl(new File("F:\intellij idea\day11\src\com\lixy"));
  }
  private static void bl(File dir) {
      //使用Lambda表达式
      File[] files = dir.listFiles((pathname)->{return pathname.isFile() && pathname.getName().endsWith(".java");});
      for (File file : files) {
              System.out.println(file);
      }
  }
}

2、listFiles(FilenameFilter filter) 返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。

作用:用来过滤文件名称

public boolean accept(File dir, String name) {//测试指定文件是否应包含在文件列表中。
  //参数
  //dir - 找到该文件的目录。
  //name - 文件的名称。
  return new File(dir,name).isFile() && new File(dir,name).getName().endsWith(".java");
}
public class Demo03Main {
  public static void main(String[] args) {
      bl(new File("F:\intellij idea\day11\src\com\lixy"));
  }
  private static void bl(File dir) {
      File[] files = dir.listFiles(new FilenameFilter() {
          @Override
          public boolean accept(File dir, String name) {
              return new File(dir,name).isFile() && name.endsWith(".java");
          }
      });
      for (File file : files) {
              System.out.println(file);
      }
  }
}
原文地址:https://www.cnblogs.com/lxy522/p/12846653.html