文件路径名过滤

kevinwangxiyu 2012-04-28 01:33:15
public static void main(String [] args){
File f=new File("路径名");
String [] s=f.list(new Filefilter());
for(int i = 0;i<s.length;i++)
System.out.println(s[i]);



}
}
class Filefilter implements FilenameFilter{
public boolean accept(File dir, String name){
System.out.println("Root:"+dir.getPath()+"\t subRoot:"+name);
File file=new File(dir,name);
if(file.isFile()&&name.indexOf(".java")!=-1)
return true;
else
return false;
}
只要创建了Filefilter的对象,就会直接自动调用accept了?不用filefilter.accept()?
系统是怎么将DIR和NAME参数传入的?
...全文
129 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevinwangxiyu 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用楼主 的回复:
只要创建了Filefilter的对象,就会直接自动调用accept了?不用filefilter.accept()?
系统是怎么将DIR和NAME参数传入的?

这个你就要去查File的list(FilenameFilter ff);源代码了。里面有怎么传递的。
能不能解释一下为什么通常用匿名内部类?这样不可以吗?
这样可以。
下面是部分源码,自己去找。。……
[/Quote]
感觉自己的思想还是面向过程。。。
kevinwangxiyu 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

[Quote=引用 2 楼 的回复:]

[Quote=引用 1 楼 的回复:]


String[] s = file.list(new FilenameFilter(){
public boolean accept(File dir , String name){
return name.endsWith(".ja……
[/Quote]
好像一般匿名内部类都是用在事件处理机制上的。。。不知道大多数编程用得到么?
sdojqy1122 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
只要创建了Filefilter的对象,就会直接自动调用accept了?不用filefilter.accept()?
系统是怎么将DIR和NAME参数传入的?
[/Quote]
这个你就要去查File的list(FilenameFilter ff);源代码了。里面有怎么传递的。
能不能解释一下为什么通常用匿名内部类?这样不可以吗?
这样可以。
下面是部分源码,自己去找。。

public String[] list(FilenameFilter filter) {
String names[] = list();
if ((names == null) || (filter == null)) {
return names;
}
ArrayList v = new ArrayList();
for (int i = 0 ; i < names.length ; i++) {
if (filter.accept(this, names[i])) {
v.add(names[i]);
}
}
return (String[])(v.toArray(new String[v.size()]));
}
uoddsa 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

[Quote=引用 1 楼 的回复:]


String[] s = file.list(new FilenameFilter(){
public boolean accept(File dir , String name){
return name.endsWith(".java");
}
})

通常都使……
[/Quote]
我觉得吧 。 过多使用匿名内部类的话,代码的可阅读性会减低(内部类中代码多的话。)
代码少的话,还是比较方便的。
kevinwangxiyu 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]


String[] s = file.list(new FilenameFilter(){
public boolean accept(File dir , String name){
return name.endsWith(".java");
}
})

通常都使用匿名内部类吧。
[/Quote]
嗯 是的 我是想尝试一下不用匿名内部类的效果。
能不能解释一下为什么通常用匿名内部类?这样不可以吗?
uoddsa 2012-04-28
  • 打赏
  • 举报
回复

String[] s = file.list(new FilenameFilter(){
public boolean accept(File dir , String name){
return name.endsWith(".java");
}
})

通常都使用匿名内部类吧。
叮当你去哪了 2012-04-28
  • 打赏
  • 举报
回复
File file = new File(path);
File[] arrayFiles = file.listFiles();
这样写你就不用纠结了~

62,614

社区成员

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

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