服务热线:13616026886

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

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

使用filefilter搜索文件


  如何快速的按照特定要求找出所有文件呢?试试java.io.filefilter 吧。
filefilter 包含在java development kit (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));
}
}
}
以下的例子中用到了上述的extensionfilefilter 代码:
...
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派生出来的,javax.swing.filechooser.filefilter 是使用jfilechoosers的抽象类。

扫描关注微信公众号