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 ...
随机推荐
- 自增特性,外键,级联更新与级联删除,表间关系,SELECT用法,GROUP BY
自增特性 自动增长的作用: 问题:为数据表设置主键约束后,每次插入记录时,如果插入的值已经存在,会插入失败. 如何解决:为主键生成自动增长的值. 自动增长的语法: 字段名 数据类型 AUTO_INCR ...
- centos7安装zabbix5.0
一.安装zabbix-server 操作系统:CentOS 7.5 1.首先关闭防火墙与SElinux 关闭防火墙 systemctl stop firewalld&&systemct ...
- ID为XXXX的进程当前未运行
项目文件夹下,有个.vs的文件夹,删除掉,然后重新打开项目就ok了. 或者: 在启动项目根目录下用文本编辑器打开Web项目下的{X}.csproj文件,然后查找 <WebProjectPrope ...
- unity---3D数学基础
点乘 A·B 判断敌人在前方还是后方 调试画线 画线段 前两个参数 分别是 起点 终点 画射线 前两个参数 分别是 起点 方向 Debug.DrawLine(this.transform.positi ...
- 142_Power BI之同比预测
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近刚好在做一个简单同比预测的模型,预测方法很简单,就是累计同比预测,把MTD展示出来. [video widt ...
- 记 iTextSharp 剪裁 PDF 指定区域的方法
原文 引用 itextsharp 5.5.13.2 itextsharp.xtra 5.5.13.2 方法 /// <summary> /// 截取pdf文件,例如把A4截出指定的A6区域 ...
- 浅谈BSGS和EXBSGS
我的 BSGS 和各位犇犇的差不多,但是不需要求逆元 Luogu [ TJOI2007 ] 可爱的质数 原题展现 题目描述 给定一个质数 \(p\),以及一个整数 \(b\),一个整数 \(n\),现 ...
- HashMap 中的 hash 函数
1. 什么是 hash 函数 hash 函数,即散列函数,或叫哈希函数.它可以将不定长的输入,通过散列算法转换成一个定长的输出,这个输出就是散列值.需要注意的是,不同的输入通过散列函数,也可能会得到同 ...
- Asp.Net Core Identity 多数据库支持
Asp.Net Core Identity 是.Net自带的身份认证系统,支持用户界面 (UI) 登录功能,并且管理用户.密码.配置文件数据.角色.声明.令牌.电子邮件确认等等.使用Visual St ...
- Jmeter基础入门应用举例
举例当然应该有接口下面以常用的百度搜索接口为例: 1.接口地址: http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试 2.请求参数 ie:编码方式,默认 ...