要得到特定目录下特定格式的文件,我们可以通过实现java.io包中的FilenameFilter接口 来
完成,API文档中对其介绍如下:
public interface 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.实现此接口的类的实例用来过滤文件名。这些
实例用来过滤File类中list方法的目录列表,AWT中的文件对话框组件也能用到它。
该接口中只有一个方法:
public boolean accept(File dir,String name)
该方法用来检查特定文件是否应该包含在文件列表中,dir表示调用list方法的File实例所表示的
目录。name是该目录下文件的名称。
我们在实现这个接口时,dir参数通常是用不到的;我在网上也搜了一下,没有一个人对该接口实现时
用到了dir参数,所以我在下面的实现类中也没有用到它,但足以满足过滤特定文件的要求了。
下面是实现类,该类中的main方法用于测试。
/** 创建日期 2011-11-24
* 演示如何使用Java来输出指定文件夹下指定格式的文件*/
package arron.util;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
/**
* @author Arron
**/
public class MyFileFilterDemo implements FilenameFilter{
private String format;//要过滤的文件格式
public MyFileFilterDemo(String format){
this.format=format;
}
//测试该实现是否完成要求 public static void main(String[] args) {
File file=new File("d:/我的文档/桌面/c++和java学习记录/JAVA/Swing");
if(file.isDirectory()){
String[] filenameList=file.list(new MyFileFilterDemo(".java"));//只保留java格式文件
for(String name:filenameList)
System.out.println(name);
}
}
/** @see java.io.FilenameFilter#accept(java.io.File, java.lang.String)*/
public boolean accept(File dir, String name) {
//dir参数可以忽视 if(name.endsWith(format))
return true;
return false;
}
}
在java.io包中还有一个FileFilter接口,该接口与FilenameFilter的作用和实现方式几乎一致。