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 ...
随机推荐
- Centos 7以上安装Docker (亲测有效)
一.安装前的准备 我的环境是VMware15虚拟机安装的Centos7,Linux内核是3.10.0-1062.4.1.e17.x86_64 1. 用root账户登录查看操作系统内核版本及相关信息 [ ...
- Servlet表单数据
1.GET 方法 GET 方法向页面请求发送已编码的用户信息.页面和已编码的信息中间用 ? 字符分隔,如下所示: http://www.test.com/hello?key1=value1&k ...
- 场景实践:使用RDS和ECS搭建个人博客
体验简介 本教程将使用一台基础环境为CentOS7.7的云服务器ECS实例, 搭配您已有的云数据库RDS实例,帮助您快速搭建属于自己的云上博客. 背景知识 本场景主要涉及以下云产品和服务: 阿里云关系 ...
- el-form 中的数组表单验证(数组可动态添加删除)
除了一些简单的表单验证之外,我们还会有一些稍微复杂点的多层级表单的验证,如下图所示可点击添加,删除对数组进行操作,当点击确定时需要验证每一条form-item不能为空 其tempalte部分主要代码如 ...
- Python <算法思想集结>之抽丝剥茧聊动态规划
1. 概述 动态规划算法应用非常之广泛. 对于算法学习者而言,不跨过动态规划这道门,不算真正了解算法. 初接触动态规划者,理解其思想精髓会存在一定的难度,本文将通过一个案例,抽丝剥茧般和大家聊聊动态规 ...
- select into 与 insert into 的区别
1.select * into table_A from table_B table_A是个新创建表,table_B是个已经存在的表. 2.insert into table_A from tabl ...
- Kubernetes client-go DeltaFIFO 源码分析
概述Queue 接口DeltaFIFO元素增删改 - queueActionLocked()Pop()Replace() 概述 源码版本信息 Project: kubernetes Branch: m ...
- c++ 关于二分的STL 详解
一.解释 以前遇到二分的题目都是手动实现二分,不得不说错误比较多,关于返回值,关于区间的左闭右开等很容易出错,最近做题发现直接使用STL中的二分函数方便快捷还不会出错,不过对于没有接触过的同学,二分函 ...
- 多路分支、for循环
多路分支 多路分支也叫做switch语句,它的格式: switch (控制表达式){ case 条件: 输出....} switch 可以看成一种跳转,每当我们满足跳转就会跳转到响应的位置,接下我们写 ...
- 最简单的离散概率分布,伯努利分布 《考研概率论学习之我见》 -by zobol
上文讲了离散型随机变量的分布,我们从最简单的离散型分布伯努利分布讲起,伯努利分布很简单,但是在现实生活中使用的很频繁.很多从事体力工作的人,在生活中也是经常自觉地"发现"伯努利分布 ...