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的更多相关文章

  1. java获取指定路径下的指定文件/java.io.File.listFiles(FilenameFilter filter)

    java.io.File.listFiles(FilenameFilter filter) 返回抽象路径名数组,表示在目录中此抽象路径名表示,满足指定过滤器的文件和目录. 声明 以下是java.io. ...

  2. 图解 Java IO : 二、FilenameFilter源码

    Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter   ...

  3. java SE :文件基本处理 File、FileFilter、FileNameFilter

    File    对目录及文件的创建.重命名.删除.文件列表.判断是否存在 构造函数 // 完整的目录或文件路径 public File(String pathname) //父级目录/文件路径+子级目 ...

  4. java 文件过滤器 java.io.FilenameFilter

    File 类里有方法: String[] list(FilenameFilter filter)    返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录. File ...

  5. Java IO之字符流和文件

    前面的博文介绍了字节流,那字符流又是什么流?从字面意思上看,字节流是面向字节的流,字符流是针对unicode编码的字符流,字符的单位一般比字节大,字节可以处理任何数据类型,通常在处理文本文件内容时,字 ...

  6. java io流 对文件操作

    检查文件是否存在 获取文件路径 获取文件大小 ...... 更多参考手册 //对文件的操作 //检查文件是否存在 //获取文件路径 //获取文件大小 //文件是否可读 //文件是否可写 //.... ...

  7. FileFilter与FilenameFilter实例

    下面的例子中我们创建了一个FileFilter类,此类根据文件名的扩展名是否为.txt来筛选文件.创建FileFilter实例之后需要将此实例作为参数传给File的listFiles(fileFilt ...

  8. java.io.File类操作

    一.java.io.File类 String path="E:/222/aaa";//路径 String path1="aaa.txt"; File file= ...

  9. java IO(一):File类

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

随机推荐

  1. Linux中查看已安装内存与交换空间使用情况

    目录   1. free查看内存使用量   2. 查看 /proc/meminfo 文件获取物理内存信息   3. top命令获取内存用量 1. free查看内存用量命令 该命令是专门用于查看内存用量 ...

  2. bootstrap Table动态绑定数据并自定义字段显示值

    第一步:我们在官网下载了bootstrap 的文档,并在项目中引入bootstrap table相关js文件,当然,也要记得引入jquery文件 大概如图: 第二步:定义一个table控件 第三步:j ...

  3. docker 启动 nginx 访问不了的问题

    使用版本:nginx version: nginx/1.13.8 正使用docker启动nginx容器的时候,一切都很正常,容器也起来了 docker run -dit -p 80:80 --name ...

  4. Nginx反向代理 Laravel获取真实IP地址(PHP)

    使用VUE前后端分离开发 后端使用Laravel  想要获取到用户的真实IP地址 因为分离开发不同源跨域问题 所以只能进行前端Nginx反向代理 location /api { rewrite ^/a ...

  5. while else

    count = 0 while count <= 5 : count += 1 if count == 3:pass print("Loop",count) else: pr ...

  6. python递归函数(计算阶乘)

    def f1(x,x1=1): if x == 1: return x1 #x1这个值为我们所需要的值,所以返回 x1 *= x r = f1(x-1,x1) #r接收返回值,并在下面接着返回 ret ...

  7. Rmarkdown:输出html设置

    在Rstudio中可自行更改主题样式 --- title: "题目" author: "name" date: "`r format(Sys.time ...

  8. ArrayList底层原理

    ArrayList底层采用数组实现,访问特别快,它可以根据索引下标快速找到元素.但添加插入删除等写操作效率低,因为涉及到内存数据复制转移. ArrayList对象初始化时,无参数构造器默认容量为10, ...

  9. VS2010安装MVC3出错

             开始已经在电脑上安装了VS2010以及SP1,还装了MVC4的相关升级包.最后项目中又要用MVC3,然后又去安装MVC3的安装包,但是在安装的过程就出现了问题.一直安装不成功,最后在 ...

  10. 纯js生成QRCode

    纯js,不依赖jquery,非常好用,废话不多说,直接上代码! <!DOCTYPE html> <html> <head> <meta charset=&qu ...