代码如下: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();
}}
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();
}}
第一个 如果不输入东西,这里没有进行过滤if(s.length()==0)
list=path.list();
第二个 你的正则写的有问题:public DirFilter(String s) {
pattern =Pattern.compile("\\w+.java");
}
比如*.java 在一些对话框中的文件类型下拉框中经常看到,就是只需要显示以.java结尾的文件。其他文件不显示。这个很简单的
File.list设置一个Filter 肯定是在list每一个文件,都调用了accept方法了。
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后缀的文件。
File.list这个方法肯定调用了。
在list方法里面肯定有这一步
FilenameFilter fn = new DirFilter(s));不信你看看源码,我们经常编码还不是这样,要调用一个类的方法,不传入这个类的实例,怎么调用呢。