我今天在TIJ上看到一个这样的例程(关于文件过滤器的):import java.io.*;
import java.util.*;
import java.util.regex.*;public class DirList {
  public static void main(String[] args) {
    File path = new File(".");
    String[] list;
    if(args.length == 0)
      list = path.list();
    else
      list = path.list(new DirFilter(args[0]));//注释1
      Arrays.sort(list);
    for(int i = 0; i < list.length; i++){
     System.out.println(list[i]);
    }
  }
}
class DirFilter implements FilenameFilter {
  private Pattern pattern;
  public DirFilter(String regex) {
    pattern = Pattern.compile(regex);
  }
  public boolean accept(File dir, String name) {
    // Strip path information, search for regex:
    return pattern.matcher(
      new File(name).getName()).matches();
  }
} ///:~
我的目的是想找出当前目录下的.java文件,请问在注释1的位置构建过滤器的参数应该怎么写,还有就是,给path.list()一个过滤器的实例,它将如何调用DirFilter的accept方法呢?多谢各位帮忙!

解决方案 »

  1.   

    "\.java$"
    这是一个正则表达式:匹配以.java结尾的文件名
      

  2.   

    编译输出还是不行
    还有我想问它是调用accept()的机制是怎样的?
      

  3.   

    这种accept()通常可以称为回调函数,
    这个函数由用户自己来撰写其内容,返回true或者false。上级类对每个文件名都会调用一次这个回调函数进行检查,判断是否要过滤掉这个文件。另外,你编译的时候出错,还是程序执行的结果不对?