JAVA 过滤文件名 FilenameFilter

 JAVA  IO 流中的 FilenameFilter 接口用来过滤文件名,就是说可以从指定目录中选出符合一定条件的文件,这个条件就在实现了 FilenameFilter 接口的类中设置。具体实现见下例:

      在例子中的目录中多放几个文件,然后看输出结果。

Test.java

===================================================================================

package com.test;

import java.io.*;

public class Test {
public static void main(String args[]) {
File dir = new File("E:/wp/Test/src/com/test");
String file[] = dir.list(new MyFilter(".java"));
for (int i=file.length; i>0; i--) {
System.out.println(file[i-1]);
}
}
}

class MyFilter implements FilenameFilter {
String name;
MyFilter(String name) {
this.name = name;
}
public boolean accept(File dir, String name) {
System.out.println("accept()");
return name.endsWith(this.name);
}
}

===================================================================================

      FilenameFilter 接口中只定义了一个方法, public boolean accept(File dir, String name),根据字面的意思理解,dir 显然是想要查询的目录,name 则是 dir 中的文件名。 accept 方法里指定了文件名要满足的条件,上面的例子中条件为扩展名为 .java 的文件。可能第一次接触这个接口的人会奇怪,并没有看到调用 accept 方法,但是结果却说明确实调用了 accept 方法,下面来看一下 File 类的 list 方法的源代码。

===================================================================================

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

===================================================================================

      File 类里面重载了 list 方法。一个是没参数的,另一个只有一个 FilenameFilter 参数。这个 list 方法先把指定目录(调用 list 方法的 File 对象就是一个目录)中的所有文件名放到 names 数组中,然后用一个循环挨个检查。最后返回一个 String[] 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值