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. Intellij IDEA创建Maven Web项目<转>

    1前言 在创建项目中,IDEA提供了很多项目模板,比如Spring MVC模板,可以直接创建一个基于Maven的Spring MVC的demo,各种配置都已经设定好了,直接编译部署就可以使用. 最开始 ...

  2. Server 2008作为打印服务器的四大错误解决方案

    http://os.51cto.com/art/201004/197322.htm http://os.51cto.com/art/201004/197322_1.htm http://os.51ct ...

  3. ORA-12504 warning in PHP

    <?php $conn = oci_connect('proekt', 'proekt1', 'localhost:1521'); $stid = oci_parse($conn, " ...

  4. elasticsearch安装与使用(5)-- search guard安装与配置

    一.安装search guard插件必须要安装两部分: ①search-guard-xx ②search-guard-ssl (XX指的是与elasticsearch引擎对应的版本) github地址 ...

  5. 防止短连接耗尽你的动态TCP端口

    详见TCP协议https://en.wikipedia.org/wiki/Transmission_Control_Protocol但是TIME_WAIT是有时间窗口的,Linux默认是60秒.所以如 ...

  6. .net提供的5种request-response方法一

    .net提供了三种基本方法和两种底层方法来发送http请求和接收http响应,通过这些方法,我们可以模仿在浏览器地址栏输入URL地址访问网页的方法.我们发送http请求,接收服务器返回的响应(通常就是 ...

  7. B树、Trie树详解

    查找(二) 散列表 散列表是普通数组概念的推广.由于对普通数组可以直接寻址,使得能在O(1)时间内访问数组中的任意位置.在散列表中,不是直接把关键字作为数组的下标,而是根据关键字计算出相应的下标. 使 ...

  8. openfire数据库mysql配置

    <?php return array( //'配置项'=>'配置值' //'USERNAME'=>'admin', //赋值 //数据库配置信息 'DB_TYPE' => 'm ...

  9. Incentivizing exploration in reinforcement learning with deep predictive models

    Stadie, Bradly C., Sergey Levine, and Pieter Abbeel. "Incentivizing exploration in reinforcemen ...

  10. apt-get强制使用Ipv4

    sudo apt-get -o Acquire::ForceIPv4=true update 永久解决办法: 创建文件 /etc/apt/apt.conf.d/99force-ipv4 加入代码: A ...