Java IO 之 FileFilter与FilenameFilter
FileFilter与FilenameFilter可以实现对文件的过滤,他们都是接口,具体的过滤规则需要我们自己编写
1、FileFilter
package org.zln.io.file; import java.io.File;
import java.io.FileFilter; /**
* 拓展名过滤器 只返回指定拓展名的文件
* Created by coolkid on 2015/6/21 0021.
*/
public class ExtensionFilter implements FileFilter{ //拓展名
private String extension; public ExtensionFilter(String extension) {
this.extension = extension;
} @Override
public boolean accept(File file) {
boolean result = false; if (file.isDirectory()){//目录 过滤掉
result = false;
}else {
String fileName = file.getName();//文件名 不是全路径
int index = fileName.lastIndexOf(".");
if (index == -1){
result = false;
}else if (index == fileName.length()-1){
result = false;
}else {
if (this.extension.equalsIgnoreCase(fileName.substring(index+1))){
result = true;
}
}
}
return result;
}
}
E:\GitHub\tools\JavaEEDevelop\Lesson1_JavaSe_Demo1\src\org\zln\io\file\ExtensionFilter.java
测试代码
File file = new File("E:\\GitHub\\tools");
File[] files = file.listFiles(new ExtensionFilter("bat"));
for (File file1:files){
System.out.println(file1.getAbsolutePath());
}
只有拓展名为 bat的文件才会被过滤出来,其他扩展名的文件以及文件夹不会被listFiles出来
在此时的逻辑上,我们是根据拓展名来过滤的,当然,如果实际需要,我们也可以根据文件的其他属性进行过滤
2、FilenameFilter
package org.zln.io.file; import java.io.File;
import java.io.FilenameFilter; /**
* 图片过滤器
* Created by coolkid on 2015/6/21 0021.
*/
public class ImageFilter implements FilenameFilter { public boolean isGif(String filename){
if (filename.toLowerCase().endsWith(".gif")){
return true;
}else {
return false;
}
} public boolean isJpg(String filename){
if (filename.toLowerCase().endsWith(".jpg")){
return true;
}else {
return false;
}
} public boolean isPng(String filename){
if (filename.toLowerCase().endsWith(".png")){
return true;
}else {
return false;
}
} @Override
public boolean accept(File dir, String name) {
System.out.println("DIR:"+dir.getAbsolutePath());
return isGif(name)||isJpg(name)||isPng(name);
}
}
E:\GitHub\tools\JavaEEDevelop\Lesson1_JavaSe_Demo1\src\org\zln\io\file\ImageFilter.java
通常使用 FilenameFilter 对文件进行过滤
Java IO 之 FileFilter与FilenameFilter的更多相关文章
- java获取指定路径下的指定文件/java.io.File.listFiles(FilenameFilter filter)
java.io.File.listFiles(FilenameFilter filter) 返回抽象路径名数组,表示在目录中此抽象路径名表示,满足指定过滤器的文件和目录. 声明 以下是java.io. ...
- 图解 Java IO : 二、FilenameFilter源码
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- java SE :文件基本处理 File、FileFilter、FileNameFilter
File 对目录及文件的创建.重命名.删除.文件列表.判断是否存在 构造函数 // 完整的目录或文件路径 public File(String pathname) //父级目录/文件路径+子级目 ...
- java 文件过滤器 java.io.FilenameFilter
File 类里有方法: String[] list(FilenameFilter filter) 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录. File ...
- Java IO之字符流和文件
前面的博文介绍了字节流,那字符流又是什么流?从字面意思上看,字节流是面向字节的流,字符流是针对unicode编码的字符流,字符的单位一般比字节大,字节可以处理任何数据类型,通常在处理文本文件内容时,字 ...
- java io流 对文件操作
检查文件是否存在 获取文件路径 获取文件大小 ...... 更多参考手册 //对文件的操作 //检查文件是否存在 //获取文件路径 //获取文件大小 //文件是否可读 //文件是否可写 //.... ...
- FileFilter与FilenameFilter实例
下面的例子中我们创建了一个FileFilter类,此类根据文件名的扩展名是否为.txt来筛选文件.创建FileFilter实例之后需要将此实例作为参数传给File的listFiles(fileFilt ...
- java.io.File类操作
一.java.io.File类 String path="E:/222/aaa";//路径 String path1="aaa.txt"; File file= ...
- java IO(一):File类
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
随机推荐
- React学习(1)—— 基础项目搭建以及环境配置
首先,我们需要安装node.js,直接搜索并在官网下载安装包. node.js官网:https://nodejs.org/en/ 现在我们成功安装了node和npm,然后我们来用npm创建新的项目,首 ...
- 一道SQL面试题——表行列数据转换(表转置)
SQL语句如下: select country, sum(case when type='A' then money end) as A, sum(case when type='B' then mo ...
- Centos6 Ruby 1.8.7升级至Ruby 2.3.1的方法
本文章地址:https://www.cnblogs.com/erbiao/p/9117018.html#现在的版本 [root@hd4 /]# ruby --version ruby (-- patc ...
- 微信小程序横向滚动
<scroll-view scroll-x="true" style=" white-space: nowrap; display: flex" > ...
- Leecode刷题之旅-C语言/python-9.回文数
/* * @lc app=leetcode.cn id=9 lang=c * * [9] 回文数 * * https://leetcode-cn.com/problems/palindrome-num ...
- ISE中FPGA的实现流程
一.ISE实现的步骤 在综合之后,我们开始启动FPGA在ISE中的实现过程,整个过程包括以下几个步骤: 1.Translate ...
- 在WPF中自定义控件(2) UserControl
原文:在WPF中自定义控件(2) UserControl 在WPF中自定义控件(2) UserControl ...
- java doc 编写
总而言之,我觉得有用的是: @see 只要敲了@see 然后会自动写你的类名的,很方便.# 去连接字段 {@link } 只要敲了{@link } 然后会自动写你的类名的,很方便.# 去连接字段 如果 ...
- C++基础语言知识大汇总(不断更新!!!)
经过十天的时间,LITTLESUN做好了前期的工作,今天LITTLESUN就要在新地图里扬帆起航喽!!!(撒花) 简单的整理了一下这次启航准备好的物资.后面的航程中也会不断来补充这个小仓库哦!
- Java的HashMap和HashTable
Java的HashMap和HashTable 1. HashMap 1) hashmap的数据结构 Hashmap是一个数组和链表的结合体(在数据结构称“链表散列“),如下图示: 当我们往hashm ...