简单分析下File.listFiles(FileFilter filter)的内部实现
1.首先我们知道listFiles的作用是返回 File 所有的子文件然后可以传入一个FileFilter过滤器得到相关的过滤后的文件
下面是listFile的源码



    public File[] listFiles(FilenameFilter filter) {String ss[] = list();<span style="white-space:pre">            </span>  //先用ss存放所有的子文件的名字if (ss == null) return null;<span style="white-space:pre">       </span>  //如果没有子文件那么就返回nullArrayList<File> files = new ArrayList<>();//实例化一个容器来存放过滤后的子文件for (String s : ss)<span style="white-space:pre">           </span>  //对子文件进行过滤和遍历if ((filter == null) || filter.accept(this, s))//accept()传给其两个参数,父文件 和子文件的名字files.add(new File(s, this));         //如果过滤器为空或者通过了过滤就把该子文件加入到容器里面return files.toArray(new File[files.size()]);//把容器变成数组返回}

下面是  FileFilter的源码就是一个接口然后要自己实现accept()方法

public interface FilenameFilter {

/**

     * Tests if a specified file should be included in a file list.** @param   dir    the directory in which the file was found.* @param   name   the name of the file.* @return  <code>true</code> if and only if the name should be* included in the file list; <code>false</code> otherwise.*/boolean accept(File dir, String name);
}
accept实现方法

accept(File dir,String name){

return new File(dir,name).isFile() && name.endsWith("png") ;//判断是文件然后以"png"结尾就可以了

}

listFiles(FileFilter filter) 的源码解析相关推荐

  1. JavaWeb三大组件之一——Filter过滤器源码解析(全面手撕Filter源码,需要耐心看完)

    什么是Filter? 本文所说的Filter是JavaWeb中常见常使用的过滤器.Filter的作用是拦截前端发送给后端的请求,一般是用于权限过滤.日志记录.图片转换.加密.数据压缩等操作. 大致流程 ...

  2. Spring 源码解析 -- SpringWeb过滤器Filter解析

    简介 在上几篇文章中探索了请求处理相关的代码,本篇开始探索请求处理前的一些操作代码,如Filter.本篇探索Filter初始化.请求处理等相关代码. 前言 说先简单的定义相关的测试代码: 启动类: i ...

  3. spring MVC cors跨域实现源码解析

    spring MVC cors跨域实现源码解析 名词解释:跨域资源共享(Cross-Origin Resource Sharing) 简单说就是只要协议.IP.http方法任意一个不同就是跨域. sp ...

  4. JDK源码解析之集合篇2--Collection

    为什么80%的码农都做不了架构师?>>>    源码解析仅个人记录,若有不正确,请留言修改 package java.util;import java.util.function.P ...

  5. 2015.07.20MapReducer源码解析(笔记)

    MapReducer源码解析(笔记) 第一步,读取数据源,将每一行内容解析成一个个键值对,每个键值对供map函数定义一次,数据源由FileInputFormat:指定的,程序就能从地址读取记录,读取的 ...

  6. Android之LocalBroadcastManager源码解析

    转载请标明出处:[顾林海的博客] 个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! 前言 广播想必大家都不陌生,日常开发中同一个APP中的多个进程之间需要进行传输信息 ...

  7. Spring源码解析 - AbstractBeanFactory 实现接口与父类分析

    2019独角兽企业重金招聘Python工程师标准>>> 我们先来看类图吧: 除了BeanFactory这一支的接口,AbstractBeanFactory主要实现了AliasRegi ...

  8. 【原创】jQuery1.8.2源码解析之jQuery.event

    本片随笔主要是分析了下jQuery的事件模型,即如何统一事件对象,以及处理过程. 这里简要说明一下几点: jQuery通过统一的方法(第62行),eventHandle函数进行事件的分发,利用jQue ...

  9. tns03505 无法解析名称_SpringBootWeb源码解析SpringMVC自动配置

    SpringMVC自动配置 在 Spring Boot 中引入了 spring-boot-starter-web 依赖,并完成了 DispatcherServlet 的自动配置之后,便会通过 WebM ...

最新文章

  1. pythongui登录界面密码显示_python的GUI之一个简单的登录界面
  2. Windows 软件推荐2020
  3. AI基础:一文看懂BERT
  4. php学习----运算符
  5. 算法高级(33)-拓扑排序-maven依赖关系的确定
  6. jemeter python接口自动化测试平台_WEB接口开发与自动化测试基于PYTHON语言PDF_Python教程...
  7. Linux下的进程管理——task_struct
  8. zabbix官方文档磁盘统计
  9. 利用 Nginx 实现限流
  10. 07. (附加)用两个队列实现栈(C++版本)
  11. 浅谈PHP数字字符串比较
  12. 金蝶K3 WISE所有单据数据库内码及描述对照表
  13. oracle erp atp是什么意思,三种ATP(ERP原理与应用教程第2版)
  14. unity3D AR涂涂乐制作浅谈
  15. C++试题 算法训练 相邻数对、画图
  16. 人生的极致:大道至简 知行合一
  17. ES 查询一,基于URL 的查询
  18. Cacti登录密码忘记,重置Cacti密码
  19. 非标自动化设备发展现状如何?
  20. 日益趋增的Linux勒索软件

热门文章

  1. 1.4-----PCB设计?(电路设计)确定方案
  2. 为什么好多网上的人都很自大
  3. 微小说获奖作品50则
  4. Java数据库JDBC——prepareStatement的用法和解释
  5. html对li设置背景色,更改li上的背景颜色:visited
  6. TS入门详解(typescript)
  7. stm32简单小实例_抓住蝶粉的心,STM32有“利器”!
  8. [課程筆記] 機器學習2021(李弘毅) L32.概述增強式學習(四)
  9. 容颜易老心憔悴,岁月易逝不留痕
  10. hive:函数:greatest和least函数