服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

使用filefilter查找文件系统


  如果你想快速地从一个文件结构中找出指定类型的所有文件,可使用 java.io.filefilter实现。




filefilter是jdk 1.2的许多附加部分之一。这个简单的接口用于一个文件是否被接受。它一个非常一般的方法,去找出一个文档系统。在filefilter和其早期接口filenamefilter间最大的不同就是:filefilter使文件作为一个文件对象,而filenamefilter使文件作为一个目录和一个字符串名被过滤。

例如:filefilter接口包含如下方法:

boolean accept(file file);
而filenamefilter包含如下方法:

boolean accept(file directory, string name);
一个简单的文件过滤是已知文件扩展名,你可以使用filenamefilter 接口,但它却难以知道这个文件名到底是一个文件还是一个目录。为了去解决这个问题,你需要去做一个文件对象,与其自己去做,不如使用filefilter接口,如下是extensionfilefilter代码:

package com.generationjava.io.find;

import java.io.file;
import java.io.filefilter;

public class extensionfilefilter implements filefilter {

private string extension;

public extensionfilefilter(string extension) {
this.extension = extension;
}

public boolean accept(file file) {
if(file.isdirectory( )) {
return false;
}

string name = file.getname( );
// find the last
int idx = name.lastindexof(".");
if(index == -1) {
return false;
} else
if(index == name.length( ) -1) {
return false;
} else {
return this.extension.equals(name.substring(index+1));
}
}

}
下面的例子使用了上面的代码:

...
string dir = "..."; // directory of your choice
file file = new file(dir);
file[] files = file.listfiles(new extensionfilefilter("cfg"));

// files variable is now c:*.cfg if ′dir′ is c:
// that is, all the files in the specified directory ending in *.cfg
...

filefilter有一个父类在javax.swing.filechooser,filefilter是一个抽象类,经常和jfilechoosers一起使用。如果这样做的话,你将必须去写一个标准的适配器。

扫描关注微信公众号