每天开心一点

File类与文件过滤器相关的方法

2019-12-12 16:36:00    六月    915    来源: https://www.cnblogs.com/leonHQ/p/9489693.html

listFiles(FileFilter) 作为参数,接口中只有一个方法

boolean accept(File pathname) 测试pathname是否应该包含在当前的File目录中,符合则返回true

accept 方法,参数为File,表示当前File下所有的子文件和子目录,保留住则返回true,过滤掉则返回false,
案例演示1.文件过滤器案例一//自定义文件过滤器public static void main(String[] args){  File file=new File("G:\21-java\file练习");  printFile(file);}public static void printFile(File file){  File[] files=file.listFiles(new FileFilter(){    @Override    public boolean accept(File pathname){      return pathname.getName().endWith(".java")||pathname.isDirectory();    }  });  //循环打印  for(File file:files){    System.out.println("文件名:"+file.getAbsplutePath());  }else{    printFile(file);  }}2.文件过滤器案例二需求分析键盘录入一个文件夹路径,统计该文件夹(包含子文件夹)中每种类型的文件及个数注意:用文件类型(后缀名,不包含.(点),如:"java","txt")作为key,用个数作为value,放入到map集合中,并用两种方式遍历map集合例如:doc 的类型的文件有 x 个java 的类型的文件有 x 个txt 的类型的文件有 x 个 public static void main(String[] args) {    Scanner scanner = new Scanner(System.in);    System.out.println("请输入已有文件路径(如G:\21-java\测试):");    String str = scanner.next();    File file = new File(str);    Map<String, Integer> map = new HashMap<>();    add(file,map);    Set<String> set = map.keySet();    for (String s : set) {        System.out.println("文件类型:"+s+"有"+map.get(s)+"个");    }} public static void add(File file, Map<String,Integer> map) {    File[] files = file.listFiles(new FileFilter() {        @Override        public boolean accept(File pathname) {            if (pathname.isDirectory()||pathname.getName().endsWith(".java")||                    pathname.getName().endsWith(".doc")||                    pathname.getName().endsWith(".txt")) {                return true;            }            return false;        }    });    for (File file1 : files) {        if (file1.isDirectory()) {            File[] files1 = file1.listFiles();            for (File file2 : files1) {                add(file2, map);            }        } else {            String str = file1.getName();            String[] ss = str.split("\.");            if (ss[1].equals(".java")) {                map.put(ss[1], map.get(ss[1]) + 1);            } else {                map.put(ss[1], 1);            }        }    }}