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. Android——edittext的几个属性

    <EditText android:layout_columnSpan="2" android:hint="To" android:layout_grav ...

  2. 路由表及route使用

    路由表 linux下通过route可以查看本地路由表: Kernel IP routing table Destination     Gateway         Genmask         ...

  3. VMware网络连接失败

    假如你碰到了VMware 网络被断开, 明明已经分配了适配器, 客户端却显示网络断开没有连接. 可用恢复默认的方法重置所有网卡及服务. 进主工具首页.点击: 虚拟网络编辑器,然后点击下面的恢复默认. ...

  4. oracle数据库表空间的创建与使用

     以下操作请使用sys系统账号操作! 1. 查询物理存储的位置 SELECT tablespace_name, file_id, file_name, round(bytes / (1024 * 10 ...

  5. Linux下安装Redmine(项目管理软件)

    前置条件需要安装 ruby,rubygems,rake,rails和mysql数据库. 安装Redmine 和 Ruby.Rails对应的版本: Redmine version Supported R ...

  6. The declared package &quot;com.dao&quot; does not match the expected package &quot;src.com.dao&quot;

    今天把项目代码上传到svn后出现例如以下错误:The declared package "com.dao" does not match the expected package ...

  7. C# 字典 Dictionary 遍历

    using System; using System.Collections.Generic; public class Example { public static void Main() { / ...

  8. r指定位置插入一列

    y<-1:4 data1 <-data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8),x3=c(11,12,13,14),x4=c(15,16,17,18)) da ...

  9. 第二百九十一节,RabbitMQ多设备消息队列-安装与简介

    RabbitMQ多设备消息队列-安装与简介 RabbitMQ简介 解释RabbitMQ,就不得不提到AMQP(Advanced Message Queuing Protocol)协议. AMQP协议是 ...

  10. Ubuntu Server 下配置静态网络的方法

    这几天一直在弄hadoop的集群,由于公司的网络原因,偶尔要重启路由器,如果网络是由路由器自动配置的话, 非常容易变换IP,这样的话,SSH无密码验证登陆到其他机器发送的配置文件*.pub就用不了,因 ...