import java.io.*;
import java.util.Arrays;
import java.util.regex.Pattern;
public class DirList {
public static void main(String[] args)
{
File path=new File("f:\\1\\");
String[] list;
if(args.length==0)
list=path.list();
else
list=path.list(new DirFilter(args[0]));
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
for(String dirItem:list)
{
System.out.println(dirItem);
}
}
}
class DirFilter implements FilenameFilter
{
private Pattern pattern;
public DirFilter(String regex)
{
pattern=Pattern.compile(regex);
}
public boolean accept(File dir,String name)
{
return pattern.matcher(name).matches();
}
}
关于这个我不是很明白。用filenamefilter接口是显示过滤啊,但是他什么也没有做写了做啥?书上写可以过滤 .java文件的,但是这个不可能实现啊?
麻烦大家给我解释下或写下注释谢谢啦。

解决方案 »

  1.   

    public boolean accept(File dir,String name)
        {
            return pattern.matcher(name).matches();
        }
    这个就是过滤器的方法.
      

  2.   

    你运行程序用:java DirList java 
      

  3.   

    list=path.list(new DirFilter(args[0])); public DirFilter(String regex)
        {
            pattern=Pattern.compile(regex);
        }
    看到args[0]和它是用到做什么了吧!  也就是说这个程序是要一个接受一个正则表达式作为输入的。 比如你给它.*java 做这参数,那所有的java文件就会被接受了。
      

  4.   

    DirFilter 类里面写的是正则表达式,用来匹配main函数输入的参数
    DirFilter 是由list方法自动调用的
      

  5.   

    java DirList \\.java
    可能得这样运行.
      

  6.   

    list=path.list(new DirFilter(args[0]));把args[0]换成正则表达式?