2007-12-04

列出目录下的文件

关键字: java
       如果想要查看一个目录列表,可以用两种方法列出File对象。如果我们调用不带参数的list方法,便可以获得此File对象包含的全部列表。然而,如果 我们想要获得一个受限列表,例如,想得到所有扩展名.java的文件,那么我们就需要用到“目录过滤器”,这个类会告诉我们怎样显示符合条件的File对 象。如下代码:

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]));
        }
        //Arrays.sort(list,new AlphabeticComparator());
       
        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){
        return pattern.matcher(new File(name).getName()).matches();
    }
}
在这段代码里,DirFilter类实现了FilenameFilter接口。FilenameFilter接口如下所述:
public interface FilenameFilter {
    boolean accept(File dir,String name);
}
 这表示这种类型的对象一定要提供一个accept()方法。创建这个类的目的在于把accept( ) 方法提供给list使用,使list()可以回调accept(),进而可以决定哪些文件包含在列表中。
评论
发表评论

您还没有登录,请登录后发表评论

yanshiyi
搜索本博客
最近加入圈子
存档
最新评论