前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >File 类基础解析3 文件过滤器优化

File 类基础解析3 文件过滤器优化

作者头像
一只胡说八道的猴子
发布2020-09-27 10:05:32
3440
发布2020-09-27 10:05:32
举报

File类基础解析3 文件过滤器优化

什么是文件过滤器?

java.io.FileFilter 是一个接口,是File的过滤器。 该接口的对象可以传递给File类的 listFiles(FileFilter) 作为参数, 接口中只有一个方法 boolean accept(File pathname) :测试pathname是否应该包含在当前File目录中,符合则返回true

简单的分析

  1. 接口作为参数,需要传递子类对象,重写其中方法。我们选择匿名内部类方式,比较简单。
  2. accept 方法,参数为File,表示当前File下所有的子文件和子目录。保留住则返回true,过滤掉则返回 false。保留规则: 1. 要么是.java文件。 2. 要么是目录,用于继续遍历。
  3. 通过过滤器的作用, listFiles(FileFilter) 返回的数组元素中,子文件对象都是符合条件的,可以直接打印
代码语言:javascript
复制
package File;
import java.io.File;
import java.io.FileFilter;

public class Main {
    public static void main(String[] args) {
        //要遍历的文件夹的根目录
        String rootpath="D:\\test";
        File file = new File(rootpath);
        printDir(file);
    }
    public  static  void printDir(File dir){
        File[] files = dir.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".png")||pathname.isDirectory();
            }
        });
        for (File file : files) {
            if (file.isDirectory()){
                printDir(file);
            }
            else{
                System.out.println("文件绝对路径:"+file.getAbsolutePath());
            }
        }
    }
}

Lambda表达式简化

代码语言:javascript
复制
package File;
import java.io.File;
public class Main {
    public static void main(String[] args) {
        //要遍历的文件夹的根目录
        String rootpath="D:\\test";
        File file = new File(rootpath);
        printDir(file);
    }
    public  static  void printDir(File dir){
        File[] files = dir.listFiles(pathname -> {
            return  pathname.getName().endsWith(".png")
                    ||pathname.isDirectory();});

        for (File file : files) {
            if (file.isDirectory()){
                printDir(file);
            }
            else{
                System.out.println("文件绝对路径:"+file.getAbsolutePath());
            }
        }
    }
}

以上就是过滤器的一些基础知识,如有错误请各位批评指正,喜欢我的文章可以点个赞收藏,

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • File类基础解析3 文件过滤器优化
  • 什么是文件过滤器?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档