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文件的,但是这个不可能实现啊?
麻烦大家给我解释下或写下注释谢谢啦。
{
return pattern.matcher(name).matches();
}
这个就是过滤器的方法.
{
pattern=Pattern.compile(regex);
}
看到args[0]和它是用到做什么了吧! 也就是说这个程序是要一个接受一个正则表达式作为输入的。 比如你给它.*java 做这参数,那所有的java文件就会被接受了。
DirFilter 是由list方法自动调用的
可能得这样运行.