java中的FileFilter的使用 为什么不输出结果 求高手指教

wangzhiqing3 2011-12-27 11:14:32
代码如下:

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();
}

}
...全文
115 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhiqing3 2011-12-27
  • 打赏
  • 举报
回复
哈哈 志同道合啊
wangzhiqing3 2011-12-27
  • 打赏
  • 举报
回复
这话说的
  • 打赏
  • 举报
回复
真相永远只有一个。。。。。
wangzhiqing3 2011-12-27
  • 打赏
  • 举报
回复
学习正则表达式有什么好书 推荐一下呗
wangzhiqing3 2011-12-27
  • 打赏
  • 举报
回复
学习正则表达式有什么好书 推荐一下呗
wangzhiqing3 2011-12-27
  • 打赏
  • 举报
回复
十分感谢啊
西部流云 2011-12-27
  • 打赏
  • 举报
回复
list=path.list(new DirFilter(s));
File.list这个方法肯定调用了。
在list方法里面肯定有这一步
FilenameFilter fn = new DirFilter(s));

不信你看看源码,我们经常编码还不是这样,要调用一个类的方法,不传入这个类的实例,怎么调用呢。
wangzhiqing3 2011-12-27
  • 打赏
  • 举报
回复
我一直不明白它的执行过程 就是生成DirFilter对象以后 他没有调用accept方法 但确实执行了这个方法
西部流云 2011-12-27
  • 打赏
  • 举报
回复
楼上的,你试试里面不是.java的文件是不是能过滤掉,你那个里面都是java文件,当然过滤出来了
huangxw000 2011-12-27
  • 打赏
  • 举报
回复
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后缀的文件。
西部流云 2011-12-27
  • 打赏
  • 举报
回复
过滤就是把你想要的东西过滤出来,放在list中。把不需要的去除掉。
比如*.java 在一些对话框中的文件类型下拉框中经常看到,就是只需要显示以.java结尾的文件。其他文件不显示。

这个很简单的
File.list设置一个Filter 肯定是在list每一个文件,都调用了accept方法了。
wangzhiqing3 2011-12-27
  • 打赏
  • 举报
回复
很是感谢啊,现在输出java文件了 不过你说的过滤是什么意思 详细解释一下把
西部流云 2011-12-27
  • 打赏
  • 举报
回复
你是不是想只输出*.java的文件? 如果是则程序里面有两处错误:
第一个 如果不输入东西,这里没有进行过滤

if(s.length()==0)
list=path.list();


第二个 你的正则写的有问题:

public DirFilter(String s) {
pattern =Pattern.compile("\\w+.java");
}


62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧