如何快速的按照特定要求找出所有文件呢?试试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的抽象类。
闽公网安备 35060202000074号