zoukankan      html  css  js  c++  java
  • IO流02_文件过滤器

    【简述】

    在File类的list方法中可以接收一个FilenameFilter参数,通过该参数可以列出只满足要求的文件。

    FilenameFilter接口里包含了一个accept(File dir, String name)方法,该方法会依次对指定的File的所有子目录或者文件进行迭代,如果该方法返回true,则list()方法会列出该子目录或文件。

    File类中的使用过滤器的list方法

    FilenameFilter接口内的accept(File dir,String name)方法

     

     【案例】

    package com.Higgin.part1;
    
    import java.io.File;
    import java.io.FilenameFilter;
    
    /**
     * FilenameFilter接口的实现类
     * 在accept方法内添加文件名的过滤器条件
     */
    class FilterName implements FilenameFilter{
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".txt");
        }
    }
    /**
     * 文件名过滤
     */
    public class FilenameFilterDemo {
        public static void main(String[] args) {
            File file=new File("c://testJavaIO");
            System.out.println("===============使用lambda表达式获取后缀为.java的文件=================");
            //使用lambda表达式,获得后缀是.java的文件
            String[] nameList=file.list((div,name)->name.endsWith(".java"));  //极大简化了代码
            for(String fileName:nameList){
                System.out.println(fileName);
            }
            
            System.out.println("===============使用lambda表达式获取后缀为.txt的文件=================");
            //不使用lambda表达式获取后缀为.txt的文件
            String[] nameList2=file.list(new FilterName()); //直接使用FileNameFilter的实现类FilterName
            for(String fileName:nameList2){
                System.out.println(fileName);
            }
        }
    }

    【对应的文件夹内的内容】

    【运行结果】

     【小结】

    上面的两个方法都实现了accept()方法,实现accept()方法起始就是实现自己的过滤规则,指定那些文件应该由list方法来列出。

    FilenameFilter接口内只有一个抽象方法,因此该方法是一个函数式接口,可以使用lambda表达式创建实现该接口。

  • 相关阅读:
    并发编程知识点剖析
    JavaScript 实现留言框
    JavaScript 实现简单的 弹出框关闭框
    网络编程知识点剖析
    css清除浮动的方法
    css盒模型
    CSS的继承性和层叠性
    转载《ionic 热更新 cordova-hot-code-push》
    转《js闭包与内存泄漏》
    前端存储loaclForage
  • 原文地址:https://www.cnblogs.com/HigginCui/p/5923892.html
Copyright © 2011-2022 走看看