Java IO流过滤器

过滤器

String[]

list(FilenameFilter filter)
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。

File[]

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

File[]

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

 

需求:过滤指定文件夹下所以指定文件(不包含子目录文件) 

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;

public class FileDemo2 {
   public static void main(String[] args) {
      listDemo1_2();
   }
   // 过滤文件名称
   public static void listDemo1_1() {
      File file = new File("C:\\");
      String names[] = file.list(new FilenameFilter() {
        public boolean accept(File dir, String name) {
           return name.endsWith(".java");
        }
      });
      for (String name : names) {
        System.out.println(name);
      }
   }

   // 根据指定后缀名过滤
   public static void listDemo1_2() {
      File file = new File("C:\\");
      String names[] = file.list(new FilterByName(".java"));
      for (String name : names) {
        System.out.println(name);
      }
   }

   // 过滤C盘目录下非隐藏文件
   public static void listDemo2() {
      File file = new File("C:\\");
      File files[] = file.listFiles(new FileFilter() {
        public boolean accept(File pathname) {
           return !pathname.isHidden();
        }
      });
      for (File f : files) {
        System.out.println(f);
      }
   }
}

// 自定义过滤器
class FilterByName implements FilenameFilter {
   private String name;
   FilterByName(String name) {
      this.name = name;
   }

   public boolean accept(File dir, String n) {
      return n.endsWith(name);
   }
}