java基础---->FilenameFilter之文件过滤
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之文件过滤的更多相关文章
- Java基础之读文件——使用通道读取混合数据2(ReadPrimesMixedData2)
控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法二:设置一个任意容量的.大小合适的字节缓冲区并且使用来自文件的字节进行填充.然后整理出缓冲区 ...
- Java基础之读文件——使用通道读取混合数据1(ReadPrimesMixedData)
控制台程序,本例读取Java基础之写文件部分(PrimesToFile2)写入的Primes.txt. 方法一:可以在第一个读操作中读取字符串的长度,然后再将字符串和二进制素数值读入到文本中.这种方式 ...
- Java基础之读文件——使用通道读二进制数据(ReadPrimes)
控制台程序,本例读取Java基础之写文件部分(PrimesToFile)写入的primes.bin. import java.nio.file.*; import java.nio.*; import ...
- Java基础之读文件——从文件中读取文本(ReadAString)
控制台程序,使用通道从缓冲区获取数据,读取Java基础之写文件(BufferStateTrace)写入的charData.txt import java.nio.file.*; import java ...
- Java基础之读文件——使用缓冲读取器读取文件(ReaderInputFromFile)
控制台程序,本例读取Java基础之写文件部分(WriterOutputToFile)写入的Saying.txt. import java.io.*; import java.nio.file.*; i ...
- Java基础之读文件——使用输入流读取二进制文件(StreamInputFromFile)
控制台程序,读取Java基础之读文件部分(StreamOutputToFile)写入的50个fibonacci数字. import java.nio.file.*; import java.nio.* ...
- Java基础知识系列——文件操作
对文件进行操作在编程中比较少用,但是我最近有一个任务需要用到对文件操作. 对文件有如下操作形式: 1.创建新的文件(夹) File fileName = new File("C:/myfil ...
- Java基础之读文件——使用通道随机读写文件(RandomReadWrite)
控制台程序,使用通道随机读写primes_backup.bin文件. import static java.nio.file.StandardOpenOption.*; import java.nio ...
- Java基础之读文件——使用通道随机读取文件(RandomFileRead)
import java.nio.file.*; import java.nio.channels.FileChannel; import java.io.IOException; import jav ...
随机推荐
- Java面向对象编程:封装,继承,多态
Java面向对象的三大特征: 封装:通过Java的类来实现数据和操作方法的封装,对外界可以将每一个Java类都视为一个黑箱,只需调用该黑箱提供的方法即可完成你想要的操作. 继承:通过类的继承,将统一的 ...
- JVM 详谈
JVM 详谈 本来这次应该讲讲ORM 的几个框架,但是笔者还没有完全总结出来,所以这里先插入一次学习JVM的心得.作为一个Java程序员,如果不了解JVM的工作原理,就很难从底层去把 握Java语言和 ...
- Linux下如何查看tomcat是否启动/系统日志等
Linux下如何查看tomcat是否启动/系统日志等 查看tomcat是否启动 ps -ef | grep tomcat 或者 ps -ef | grep java 启动tomcat(在tomca ...
- 微信分享SDK
网址:http://www.8ru.org/weixin-js-sdk.html 下载demo:http://demo.open.weixin.qq.com/jssdk
- JQuery _ 定时器(jQuery Timers) 学习
jQuery Timers插件地址: http://plugins.jquery.com/project/timers JQuery Timers应用知识 提供了三个函式 1. everyTime(时 ...
- 关于Cocos2d-x中自己定义的类的名字和Cocos2d-x引擎库中的类的名字重复的解决方法
方法一: 修改自己定义的类的名字,VS2013中可以用Ctrl+H来替换某个特定的单词,Ctrl+F是用来查询某个单词所在的位置或者有没有存在. 方法二: 1.给自己定义的类的.h和.cpp文件的整体 ...
- 【转】C# URL短地址压缩算法及短网址原理解析
这篇文章主要介绍了C# URL短地址压缩算法及短网址原理解析,本文重点给出了算法代码,需要的朋友可以参考下 短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaur ...
- PyQT中多重继承,其中继承的父类有QObject或QObject的子孙类
如果Child多重继承(Parent_1,Parent_2,Parent_3),其super函数 super(Child, self).__init__() 则会执行继承的最左侧的父类:Parent_ ...
- 查看CentOS系统配置情况命令
系统 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # ho ...
- 【Java NIO的深入研究1】缓冲区
缓冲区 传统的流和通道的对比 流 通道 慢 快 处理简单 处理复杂 单字节的传输 一块数据的传输 - Java.io.*已经重新写过 - 是对流的模拟 单向的 双向的 可直接访问 必须通过Buffer ...