FilenameFilter 实现文件过滤

简介: 实现 FilenameFilter 接口的类的实例用于过滤文件名。这些实例被用来过滤类 File 的 list 方法中的目录列表。FilenameFilter 接口很简单,只有一个 accpet 方法

实现 FilenameFilter 接口的类的实例用于过滤文件名。这些实例被用来过滤类 File 的 list 方法中的目录列表。FilenameFilter 接口很简单,只有一个 accpet 方法

@FunctionalInterface
publicinterface FilenameFilter {
    boolean accept(File dir, String name);
}

此接口用 @FunctionalInterface 标注,@FunctionalInterface 的是 Java8 提出来的,它表示由此注解注释的接口都可以作为功能性接口,功能性接口一种信息性注释类型,从概念上来讲,一个功能性接口应该有一个抽象方法。功能性接口的实例被用来创建 lambda 表达式,方法引用 或者 构造器引用。

所以FilenameFilter 也只有一个 accpet 方法,它用来测试指定的文件是否应包含在文件列表中。下面通过一个例子来演示一下 FilenameFilter 的用法

publicclass FilenameFilterApp {

public static void main(String[] args) {
File file = new File(".");
// 匿名内部类写法,可以用 lambda 表达式改写
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// 返回 true 是过滤出
if (name.startsWith(".")) {
returntrue;
}
// 返回 false 是过滤掉
returnfalse;
}
});
for(int i = 0;i < files.length;i++){
File f = files[i];
System.out.println(f.getName());
}
}
}

代码使用了当前根目录作为文件的路径,使用 java.io.File 类中的 listFiles 方法用于列出所有文件,返回一个 File 类型的数组,代码采用匿名内部类的写法,引用了 FilenameFilter 中唯一的 accpet() 方法,方法返回 true 表示过滤出满足条件的文件路径,返回 false 是过滤掉不满足条件的文件路径。

可以使用 lambda 表达式进行改写:

publicclass FilenameFilterApp {
public static void main(String[] args) {
File file = new File(".");
File[] files = file.listFiles((d, s) -> {
return s.startsWith(".");
});
for(int i = 0;i < files.length;i++){
File f = files[i];
System.out.println(f.getName());
}
}
}
            </div>
目录
相关文章
|
Kubernetes 网络协议 调度
聊聊k8s中的hostport和NodePort
让服务基于节点暴露端口,大家最先想到的应该都是 nodeport 这种 service,他可以非常方便的为pod代理外部流量,那么 hostport 是什么呢?他和 nodeport 的区别是什么,今天我们来聊聊这个比较小众的 hostport。
7495 0
聊聊k8s中的hostport和NodePort
|
弹性计算
阿里云服务器如何升级实例规格、cpu和内存、带宽等配置
购买阿里云服务器之后,后期如何升级云服务器的实例规格、cpu和内存、带宽配置?以下是阿里云服务器如何升级配置的最新教程。
3549 0
阿里云服务器如何升级实例规格、cpu和内存、带宽等配置
|
SQL 存储 JavaScript
SAP HANA 详细介绍
SAP HANA 详细介绍
1934 0
|
新零售 搜索推荐 调度
通过Flink实时构建搜索引擎的索引
1.背景介绍 搜索引擎的出现大大降低了人们寻找信息的难度,已经深入到生活与工作的方方面面,简单列举几个应用如下: 互联网搜索,如谷歌,百度等; 垂直搜索,如淘宝、天猫的商品搜索; 站内搜索,各个内容网站提供的站内搜索服务; 企业内部搜索,员工查询企业内部信息; 广告投放,根据投放上下文检索出对应的广告主和广告内容; 搜索引擎的关键是让用户找到其所需信息,其整体架构如下: 从图示可知,一个搜索引擎从大的方面来看主要包括两部分,一部分是提供在线的搜索服务,一部分要把原始数据已离线的方式建立索引,建立索引是信息可搜索的前提。
18241 160
|
前端开发 Java Serverless
玩转《天猫精灵技能平台》,搞一个诗词问答小游戏
看了中国诗词大会,必须要自己搞一个诗词问答小游戏。 文章最后还有一个思路,非常简单的思路,大家可以试着去实现一下。
14270 5
玩转《天猫精灵技能平台》,搞一个诗词问答小游戏
|
人工智能 前端开发 大数据
千份阿里技术学习资源免费送!你想要的电子书、大会资料和资源礼包都在这
开发者社区好久没有送礼包了,阿里妹实在“憋得慌”!今天咱们送个大的,这里收录了目前为止最全的阿里系电子书、火遍业界的技术大会演讲资料、超人气系列公开课 以及 四位一体的开发者学习大礼包!
45796 2
千份阿里技术学习资源免费送!你想要的电子书、大会资料和资源礼包都在这
|
架构师 云栖大会 云计算
分享阿里云ace考试攻略 详解ACP认证考试须知
最近很多朋友都在关注阿里云ace考试,那么这个ACE证书的含金量如何?阿里云ace考试是怎么考的?下面就让认证大使来给大家介绍一下阿里云ace考试攻略,有需要的朋友进来看看吧。
873 1
分享阿里云ace考试攻略 详解ACP认证考试须知
|
SQL 域名解析 弹性计算
阿里云服务器购买之后设置密码、安全组、增加带宽、挂载云盘教程
当我们通过阿里云各种活动购买完云服务器之后,设置云服务器远程密码、配置安全组规则是必须操作的,很多新手用户由于是初次使用阿里云服务器,因此并不知道这些设置的操作流程,下面给大家介绍下这些设置的具体操作流程。
2022 0
阿里云服务器购买之后设置密码、安全组、增加带宽、挂载云盘教程
|
监控 安全 数据可视化
DingTalk「开发者说」钉钉连接平台,快速实现企业系统互联互通
钉钉连接平台通过简单的低代码配置,帮助企业迅捷实现系统集成和连接,降低集成实施的周期和成本。本文主要介绍了连接平台的概念、产品优势和价值、适用场景和案例,以及技术架构。
2865 0
DingTalk「开发者说」钉钉连接平台,快速实现企业系统互联互通
|
机器学习/深度学习 人工智能 机器人
腾讯成立机器人实验室Robotics X,与Nature宣布长期合作
3 月 15 日,腾讯 AI Lab 第二届学术论坛在深圳举行,在上午的论坛开幕活动中,腾讯揭晓了两个重磅消息:成立机器人实验室 Robotic X;腾讯 AI Lab 与自然科研达成战略合作。
1073 0
腾讯成立机器人实验室Robotics X,与Nature宣布长期合作