专栏首页Java系列学习与数据结构算法File 类基础解析3 文件过滤器优化

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

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) 返回的数组元素中,子文件对象都是符合条件的,可以直接打印
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表达式简化

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());
            }
        }
    }
}

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java File类基础解析 1

    public File(String pathname) :通过给定的路径名字符转换为抽象路径名来创建新的File实例

    一只胡说八道的猴子
  • Java File类基础解析 使用递归来遍历目录 2

    一只胡说八道的猴子
  • Java中多线程的使用(超级超级详细)线程安全+线程锁原理解析+保证线程安全的三种方式 (同步代码块+同步方法+lock锁) 5

    当我们使用多线程访问同一个资源时,且多个线程对资源有写的 操作就容易出现线程安全问题,java为了解决线程安全问题引入了同步机制来解决,即在一个线程使用公共代码...

    一只胡说八道的猴子
  • 第5次文章:关于IO流的基本操作

    春节假期就要结束啦,很多小伙伴儿明天就开始上班了,祝各位小伙伴儿新的一年工作顺心,万事顺利哟!

    鹏-程-万-里
  • Java基础之IO流(一)

    回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下次再想使用这些数据,可是已经没有了。那怎么办呢?能不能把运算完的数据都保存下来,下...

    Remember_Ray
  • (59) 文件和目录操作 / 计算机程序的思维逻辑

    前面两节我们介绍了如何通过流的方式读写文件内容,本节我们介绍文件元数据和目录的一些操作。 文件和目录操作最终是与操作系统和文件系统相关的,不同系统的实现是不一样...

    swiftma
  • 第53节:Java当中的IO流(上)

    在Java中,字符串string可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以...

    达达前端
  • 初学File类

    对File类的基本方法的理解 今天刚开始学了File类 一开始看思想编程看得迷迷糊糊的,之后受不了了,直接去看API文档 归纳: File->jav...

    用户1174983
  • Java IO学习笔记一

    爱撒谎的男孩
  • Java 基础(三)| IO流之使用 File 类的正确姿势

    为跳槽面试做准备,今天开始进入 Java 基础的复习。希望基础不好的同学看完这篇文章,能掌握泛型,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆...

    一个优秀的废人

扫码关注云+社区

领取腾讯云代金券