代码如下:import java.util.regex.*;
import java.io.*;
import java.lang.reflect.Array;import java.util.*;
public class CallBack{
public static void main(String[] args) throws IOException{
File path=new File("D:\\workspace\\AI_WordSplit\\src");
String[] list;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String s=br.readLine();
if(s.length()==0)
list=path.list();
else
list=path.list(new DirFilter(s));
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
for(String st:list){
System.out.println(st);
}
}
}
import java.io.*;
import java.util.*;
import java.util.regex.Pattern;public class DirFilter implements FilenameFilter {
    private Pattern pattern;
public DirFilter(String s) {
       pattern =Pattern.compile("java");
} public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}}

解决方案 »

  1.   

    你是不是想只输出*.java的文件? 如果是则程序里面有两处错误:
    第一个  如果不输入东西,这里没有进行过滤if(s.length()==0)
    list=path.list();
    第二个 你的正则写的有问题:public DirFilter(String s) {
        pattern =Pattern.compile("\\w+.java");
    }
      

  2.   

    很是感谢啊,现在输出java文件了 不过你说的过滤是什么意思 详细解释一下把 
      

  3.   

    过滤就是把你想要的东西过滤出来,放在list中。把不需要的去除掉。
    比如*.java 在一些对话框中的文件类型下拉框中经常看到,就是只需要显示以.java结尾的文件。其他文件不显示。这个很简单的
    File.list设置一个Filter 肯定是在list每一个文件,都调用了accept方法了。
      

  4.   

    package ss;import java.io.BufferedReader;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Arrays;public class CallBack {
        public static void main(String[] args) throws IOException {
    File path = new File("C:\\workproduct\\Mina\\src\\common");
    String[] list;
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String s = br.readLine();
    if (s.length() == 0)
        list = path.list();
    else
        list = path.list(new DirFilter(s));
    Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
    for (String st : list) {
        System.out.println(st);
    }
        }
    }package ss;import java.io.File;
    import java.io.FilenameFilter;
    import java.util.regex.Pattern;public class DirFilter implements FilenameFilter {
        private Pattern pattern;
        private String name;    public DirFilter(String s) {
    pattern = Pattern.compile("java");
    this.name = s;
        }    public boolean accept(File dir, String name) {
    return pattern.matcher(this.name).matches();
        }}输入 java,回车,输出:
    AllSort.java
    ClientHandler.java
    MinaClient.java
    MinaTimeServer.java
    Single.java
    Test.java
    Testc.java
    TimeServerHander.java
    Zip.java
    ZipTool.java
    Zuhe.java
    过滤出了.java后缀的文件。
      

  5.   

    楼上的,你试试里面不是.java的文件是不是能过滤掉,你那个里面都是java文件,当然过滤出来了
      

  6.   

    我一直不明白它的执行过程 就是生成DirFilter对象以后 他没有调用accept方法 但确实执行了这个方法
      

  7.   

    list=path.list(new DirFilter(s));
    File.list这个方法肯定调用了。
    在list方法里面肯定有这一步
    FilenameFilter fn =  new DirFilter(s));不信你看看源码,我们经常编码还不是这样,要调用一个类的方法,不传入这个类的实例,怎么调用呢。