使用FileFilter查找文件系统

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

假如你想快速地从一个文件结构中找出指定类型的所有文件,可使用 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一起使用。假如这样做的话,你将必须去写一个标准的适配器。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航