FileFilter过滤器的原理和使用和FileNameFilter过滤器的使用
FileFilter过滤器的原理和使用
package com.yang.Test.FileStudy;
import java.io.File;
/**
* 在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器
* File[] ListFiles(FileFilter filter)
* java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器
* 作用:用来过滤文件(File对象)
* 抽象方法:用来过滤文件的方法
* boolean accept(File pathname) 测试指定抽象路径名是否应该包含某个路径名列表中
* 参数:File pathname:使用ListFiles方法遍历目录,得到每一个文件对象
* File[] ListFiles(FilenameFilter filter)
* java.io.FilenameFilter接口:实现此接口的类实例可以用于过滤文件名。
* 作用:用于过滤文件名称
* 抽象方法:用来过滤文件的方法
* boolean accept(File dir,String name)测试指定文件是否应该包含在某一文件列表中
* 参数:
* File dir:构造方法中传递的被遍历的目录
* String name:使用ListFiles方法遍历目录,过去每一个文件/文件夹的名称
* 注意:
* 两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤器的方法,在方法中自己定义过滤的规则
*
*/
public class study01 {
public static void main(String[] args) {
new study01().getAllFile(new File("D:\\音乐"));
}
/**
* 定义一个方法,参数传递File类型的目录
* 方法中对目录进行遍历
* @param dir
*/
public void getAllFile(File dir){
File[] files = dir.listFiles(new FileFilterImpl());
for (File file : files) {
if (file.isDirectory()) {
getAllFile(file);
} else {
System.out.println(file);
}
}
}
}
package com.yang.Test.FileStudy;
import java.io.File;
import java.io.FileFilter;
import java.util.Locale;
/**
* 创建过滤器FileFilter的实现类,重写过滤方法accept,定义过滤规则
*/
public class FileFilterImpl implements FileFilter {
@Override
public boolean accept(File pathname) {
/**
* 过滤的规则:
* 在accept方法中,判断File对象是否是以.mp3结尾
* 是就返回true
* 不是就返回false
*/
return pathname.getName().toLowerCase().endsWith(".mp3");
}
}
FileNameFilter过滤器的使用
package com.yang.Test.FileStudy;
import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
/**
* 在File类中有两个和ListFiles重载的方法,方法的参数传递的就是过滤器
* File[] ListFiles(FileFilter filter)
* java.io.FileFilter接口:用于抽象路径名(File对象)的过滤器
* 作用:用来过滤文件(File对象)
* 抽象方法:用来过滤文件的方法
* boolean accept(File pathname) 测试指定抽象路径名是否应该包含某个路径名列表中
* 参数:File pathname:使用ListFiles方法遍历目录,得到每一个文件对象
* File[] ListFiles(FilenameFilter filter)
* java.io.FilenameFilter接口:实现此接口的类实例可以用于过滤文件名。
* 作用:用于过滤文件名称
* 抽象方法:用来过滤文件的方法
* boolean accept(File dir,String name)测试指定文件是否应该包含在某一文件列表中
* 参数:
* File dir:构造方法中传递的被遍历的目录
* String name:使用ListFiles方法遍历目录,过去每一个文件/文件夹的名称
* 注意:
* 两个过滤器接口是没有实现类的,需要我们自己写实现类,重写过滤器的方法,在方法中自己定义过滤的规则
*
*/
public class study01 {
public static void main(String[] args) {
new study01().getAllFile(new File("D:\\音乐"));
}
/**
* 定义一个方法,参数传递File类型的目录
* 方法中对目录进行遍历
* @param dir
*/
public void getAllFile(File dir){
/* File[] files = dir.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.isDirectory()){
return true;
}
return pathname.getName().toLowerCase().endsWith(".mp3");
}
});*/
File[] files = dir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir,name).isFile() || name.toLowerCase().endsWith(".mp3");
}
});
for (File file : files) {
if (file.isDirectory()) {
getAllFile(file);
} else {
System.out.println(file);
}
}
}
}
FileFilter过滤器的原理和使用和FileNameFilter过滤器的使用的更多相关文章
- 综合案例_文件搜索和FileFilter过滤器的原理和使用
文件搜索 需求 : 遍历D:\aaa文件夹,及 aaa 文件夹的子文件夹并且只要.java结尾的文件 分析: 1.目录搜索,无法判断多少级目录,所以使用递归,遍历所有目录 2.遍历目录时,获取的子文件 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_03 过滤器_1_FileFilter过滤器的原理和使用
FileFilter 需要先定义接口的实现类.并重写过滤的方法 使用 并没有起作用 过滤器的原理 缺少了a.java和b.java 如果是文件夹,就返回true,那么就会返回到Files[]数组中.然 ...
- FileNameFilter过滤器的使用和Lambda优化程序--IO概述(概念&分类)
FileNameFilter过滤器的使用和Lambda优化程序 public class Demo02Filter { public static void main(String[] args) { ...
- Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题
Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...
- python实现布隆过滤器及原理解析
python实现布隆过滤器及原理解析 布隆过滤器( BloomFilter )是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地 ...
- yii过滤器的原理和使用
过滤器官方页面:http://www.yiiframework.com/doc/guide/1.1/zh_cn/basics.controller 过滤器是一段代码,可被配置在控制器动作执行之前或之后 ...
- [原创]java WEB学习笔记44:Filter 简介,模型,创建,工作原理,相关API,过滤器的部署及映射的方式,Demo
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- 深入Struts2的过滤器FilterDispatcher--中文乱码及字符编码过滤器
引用 前几天在论坛上看到一篇帖子,是关于Struts2.0中文乱码的,楼主采用的是spring的字符编码过滤器(CharacterEncodingFilter)统一编码为GBK,前台提交表单数据到Ac ...
- Django框架之第五篇(模板层) --变量、过滤器、标签、自定义标签、过滤器,模板的继承、模板的注入、静态文件
模板层 模板层就是html页面,Django系统中的(template) 一.视图层给模板传值的两种方法 方式一:通过键值对的形式传参,指名道姓的传参 n = 'xxx'f = 'yyy'return ...
随机推荐
- 树莓派开发笔记(十四):入手研华ADVANTECH工控树莓派UNO-220套件(三):使用研发自带系统测试rtc、gpio、232和485套件接口
前言 上一篇说明了必须要使用研华自带的8G卡的系统,通过沟通拿到了相关的系统,购买的时候会带8GB的卡,请自行备份一份镜像.本篇对uno-220套件的相关研华配套的额外接口做测试,篇幅较长,重点讲 ...
- 九种常见UML图(分类+图解)
九种常见UML图 1.类图 概述 类图(Class Diagram)是面向对象系统建模中最常用和最重要的图,是定义其它图的基础. 类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静 ...
- MVC 调试页面路径变成 Views/Controller/Action.cshtml问题
MVC在路由里面已经写好了路径,但是调试时地址栏还是会变成 Views/Controller/Action.cshtml,导致报404错误,找不到路径. 原因可能是你将某一页面设为了起始页,导致每次运 ...
- SQL中的数字、字母和汉字
知识点001 当变量的数据类型为VARCHAR时,变量赋值后,变量中的字符所占字节数,数字和字母是1个bytes,汉字是2个bytes; 当变量的数据类型为NVARCHAR时,变量赋值后,变量中的字符 ...
- Go微服务框架go-kratos实战03:使用 gorm 实现增删改查操作
一.简介 在上一篇文章 go-kratos实战02 中,详细介绍了用 kratos 编写项目代码的步骤.这篇就在上篇基础上,再结合 Go 数据库操作库 gorm 一步一步来实现一个简单的增删改查操作. ...
- 我用 AntV/S2 买了一套房
背景 经过一年多的摇号,我在前两天收到了某网红盘的摇中通知.还沉浸在摇中房屋喜悦中的我,很快被售房顾问告知选房的人很多,每位购房者的选房时间都很短,必须 一分钟内 快速选房.并且,排在 400 多号的 ...
- 基于BPM的低代码开发平台应具备什么功能
一个BPM平台应该具备什么样的功能 用户在选型BPM软件的时候往往不知道该关注哪些功能,什么样的BPM软件能满足国内企业应用需求,笔者从多年BPM研发和实施经验提炼了中国特色BPM应该具备的功能 ...
- 【C#/VB.NET】 将PDF转为SVG/Image, SVG/Image转PDF
SVG是一种图形文件格式,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形.它在放大或者改变尺寸的情况下其图形质量不会有所损失,且与 JPG 和 GIF 图像比起 ...
- 【前端面试】(四)JavaScript var let const的区别
视频链接: JavaScript var let const的区别 - Web前端工程师面试题讲解 参考链接: JavaScript 变量 JavaScript Let JavaScript Cons ...
- IP寻址与规划
一.IP寻址和子网划分 IP地址的主机部分可被分为三种地址:网络地址.主机地址和定向广播地址. 网络地址是网络号中的第一个地址.它用来将网络内的其他所有网段唯一标识为一个网段或广播域.定向广播地址是网 ...