FilenameFilter用于对列表中文件名的过滤,今天我们就开始java中FilenameFilter的学习。好多年了,你一直在我的伤口中幽居,我放下过天地,却从未放下过你,我生命中的千山万水,任你一一告别。

java中FilenameFilter的使用

java文档对FilenameFilter的描述:

Instances of classes that implement this interface are used to filter filenames. These instances are used to filter directory listings in the list method of class File, and by the Abstract Window Toolkit's file dialog component.

我们通过一个案例,来加深对FilenameFilter的了解与使用,项目结构如下:

aaarticlea/png;base64,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" alt="" />

一、 定义一个实现FilenameFilter的类,用于对文件名的过滤

package com.huhx.file;

import java.io.File;
import java.io.FilenameFilter;
import java.util.regex.Pattern;
/**
* @author huhx
*/
public class DirFilter implements FilenameFilter {
private Pattern pattern; public DirFilter(String regex) {
pattern = Pattern.compile(regex);
} @Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
}

二、 在DirList.java类中测试使用

package com.huhx.file;

import java.io.File;
import java.util.Arrays;
/**
* @author huhx
*/
public class DirList { public static void main(String[] args) {
File filePath = new File("file");
String[] list = filePath.list(new DirFilter("E.*\\.java"));
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER); for (String dirName : list) {
System.out.println(dirName);
}
}
}

三、 得到结果如下:

EscapingDNs.java
External.java

FilenameFilter的分析

一、 我们看一下File类的list(FilenameFilter filter)方法,代码如下:

public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
List<String> v = new ArrayList<>();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return v.toArray(new String[v.size()]);
}

调用list()方法得到文件夹下的所有文件名,然后遍历所有的文件名。通过FilenameFilter的accept方法进行过滤,将符合要求的文件名加入到列表中,最后返回

二、 File中有一个类似的方法listFiles(FileFilter filter)方法,我们看下代码:

public File[] listFiles(FilenameFilter filter) {
String ss[] = list();
if (ss == null) return null;
ArrayList<File> files = new ArrayList<>();
for (String s : ss)
if ((filter == null) || filter.accept(this, s))
files.add(new File(s, this));
return files.toArray(new File[files.size()]);
}

与上述的list方法很类似,只是返回的类型不一样。

友情链接

java基础---->FilenameFilter之文件过滤的更多相关文章

  1. Java基础之读文件——使用通道读取混合数据2(ReadPrimesMixedData2)

    控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法二:设置一个任意容量的.大小合适的字节缓冲区并且使用来自文件的字节进行填充.然后整理出缓冲区 ...

  2. Java基础之读文件——使用通道读取混合数据1(ReadPrimesMixedData)

    控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法一:可以在第一个读操作中读取字符串的长度,然后再将字符串和二进制素数值读入到文本中.这种方式 ...

  3. Java基础之读文件——使用通道读二进制数据(ReadPrimes)

    控制台程序,本例读取Java基础之写文件部分(PrimesToFile)写入的primes.bin. import java.nio.file.*; import java.nio.*; import ...

  4. Java基础之读文件——从文件中读取文本(ReadAString)

    控制台程序,使用通道从缓冲区获取数据,读取Java基础之写文件(BufferStateTrace)写入的charData.txt import java.nio.file.*; import java ...

  5. Java基础之读文件——使用缓冲读取器读取文件(ReaderInputFromFile)

    控制台程序,本例读取Java基础之写文件部分(WriterOutputToFile)写入的Saying.txt. import java.io.*; import java.nio.file.*; i ...

  6. Java基础之读文件——使用输入流读取二进制文件(StreamInputFromFile)

    控制台程序,读取Java基础之读文件部分(StreamOutputToFile)写入的50个fibonacci数字. import java.nio.file.*; import java.nio.* ...

  7. Java基础知识系列——文件操作

    对文件进行操作在编程中比较少用,但是我最近有一个任务需要用到对文件操作. 对文件有如下操作形式: 1.创建新的文件(夹) File fileName = new File("C:/myfil ...

  8. Java基础之读文件——使用通道随机读写文件(RandomReadWrite)

    控制台程序,使用通道随机读写primes_backup.bin文件. import static java.nio.file.StandardOpenOption.*; import java.nio ...

  9. Java基础之读文件——使用通道随机读取文件(RandomFileRead)

    import java.nio.file.*; import java.nio.channels.FileChannel; import java.io.IOException; import jav ...

随机推荐

  1. USB 转LAN AX88772B 模块驱动添加记录

    使用 AX88772B 模块进行扩展百兆网口. 资料地址: http://www.asix.com.tw/cs/products.php?op=pItemdetail&PItemID=105; ...

  2. iOS边练边学--Segue数据逆传(用block代替delegate)

    一.block与方法的异同点: 相同点是都是保存代码段,什么时候执行,什么时候调用 不同点是block不受类或者对象的约束:方法收到了类或者对象的约束 二.思路:(通讯录练习) 在联系人控制器中,添加 ...

  3. Hibernate- QBC离线查询

    package com.gordon.test; import java.util.List; import org.hibernate.Criteria; import org.hibernate. ...

  4. Spring Boot 日志记录 SLF4J

    Spring Boot 日志记录 SLF4J 2016年01月12日 09:25:28 阅读数:54086 在开发中打印内容,使用 System.out.println() 和 Log4j 应当是人人 ...

  5. 15款很棒的 JavaScript 开发工具

    在开发中,借助得力的工具可以事半功倍.今天,我爱互联网向大家分享最新收集的15款非常有用的 javascript 开发工具. TestSwarm: Continious & Distribut ...

  6. python文件夹批处理操作

    如图所示,有一个test文件夹,里面有3个子文件夹,每个子文件夹中有若干图片文件    #场景1 读取一个文件夹中所有文件,存入到一个list表中 #coding:utf-8 from __futur ...

  7. windows 开启端口

    场景: 解决方法: 选中入站规则,右键选择新建入站规则: 然后 选择“允许连接”,点“下一步”. 效果: 连接成功.

  8. 手动安装OpenStack Mistral

    Prepare packages: $ sudo apt-get install python-dev python-setuptools python-pip libffi-dev libxslt1 ...

  9. php如何解决多线程同时读写一个文件的问题

    <?php header("content-type:text/html;charset=utf-8"); $fp = fopen("lock.txt", ...

  10. linux命令详解之netstat

    今天在使用linux的时候,要查看端口号,但是不知道要使用哪一个命令所以就学习了一下,原来是使用netstat,接下来给大家一起来学习. 一.netstat介绍 1.1.简介 Netstat 命令用于 ...