`

JAVA 过滤文件名 FilenameFilter

    博客分类:
  • j2se
阅读更多

 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[] 。

分享到:
评论

相关推荐

    小程序------FilenameFilter 接口 过滤指定类型的文件

    FilenameFilter 接口 过滤指定类型的文件,下面的程序就是过滤出D://zhang//root目录下的 .java 的文件。 - -

    java核心编程之文件过滤类FileFilter和FilenameFilter

    主要为大家详细介绍了java文件过滤类FileFilter和FilenameFilter,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Java使用FilenameFilter查找出目录下指定后缀的文件示例

    主要介绍了Java使用FilenameFilter查找出目录下指定后缀的文件,结合实例形式分析了java基于FilenameFilter类的文件遍历、查找相关操作技巧,需要的朋友可以参考下

    java实现的文件搜索器

    java的FilenameFilter实现的文件过滤

    FilenameFileter list 查看 java文件列表(过滤 java文件)

    这个是用FilenameFilter 做的过滤 .java文件,当然可以过滤其他的,比较简单的一个demo,新手适用。可以看看。不喜勿喷呀。谢谢。

    FilenameFilter的用法

    FilenameFilter的用法 FilenameFilter是一个接口,它本身最大的作用就是在File文件夹对像的list和listFiles方法中做文件过滤使用。

    day018-File类代码以及笔记.rar

    FilenameFilter:文件名过滤器接口 4.File[] listFiles(FilenameFilter filter) 获取根据文件名过滤后的文件对象 FilenameFilter:文件名过滤器接口 -----------------------------上面...

    java文件字符编码检测和转换

    字符编码检测和转换 附件中:FileEncodeDetector.java 此文件可以检测指定文件的编码格式 ... new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".java"); } });

    JAVA做的图片浏览GUI源代码

    &lt;br&gt;其类有: &lt;br&gt;PicBrowseFrame.class 图片浏览器的主窗体 &lt;br&gt;ImageFilter.class 图片过滤 &lt;br&gt;FileNameFIlter.class 文件过滤 &lt;br&gt;Uitl.class 文件名后缀解析 &lt;br&gt;JFileChooserCre.class ...

    JDK_API_1_6

    FilenameFilter 实现此接口的类实例可用于过滤器文件名。 Flushable Flushable 是可刷新数据的目标地。 ObjectInput ObjectInput 扩展 DataInput 接口以包含对象的读操作。 ObjectInputValidation 允许验证图形中...

    MP3Player多媒体

    import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.media....

    thinkinjava源码-ThinkingInJava:用Java源代码思考

    实现FilenameFilter接口来对文件做出过滤 2、关与给匿名类需要传入final参数问题 匿名内部类编译时,会单独生成一个class文件,该类持有外部类的引用,传入的参数都会自动复制一份。那么传入的参数 与 内部类实际...

    JavaRegexFilenameFilter-开源

    这个项目被放弃了。 这是一个简单的Java库,用于构造实现Java接口FilenameFilter的正确对象,以使用正则表达式作为文件名过滤器。

    用Python遍历C盘dll文件的方法

    python 的fnmatch 还真是省心,相比于 java 中的FilenameFilter ,真是好太多了,你完成不需要去实现什么接口。 fnmatch 配合 os.walk() 或者 os.listdir() ,你能做的事太多了,而且用起来相当 easy。 # coding: ...

    java 查看任意路径的图片浏览器

    本图片浏览器可以打开任何路径浏览查看照片。

    Jsoup学习——Saz2Csv解析器

    4、Java FilenameFilter类的使用:遍历指定后缀名的文件 5、Java中字符串的处理:String类和StringBuffer类,substring()、indexOf()、lastIndexOf()、replace()、replaceAll()、trim()、toLowerCase()、endsWith()...

    图片浏览器-Java课程设计.doc

    二、概要设计 本次课程设计模块图、系统流程图: 三、运行环境、开发语言 操作系统:Windows XP 专业版 32位 SP3 ( DirectX 9.0c ) 开发工具:MyEclipse 开发语言:java 四、详细设计 1 程序清单 String pt;...

    Android 简单的录音机

    003 import java.io.FilenameFilter; 004 import java.io.IOException; 005 import java.util.ArrayList; 006 import java.util.List; 007   008 import android.app.ListActivity; 009 import android....

    浏览图片代码-查看某个文件夹中的图片,显示在网页中

    import java.io.*; class FileName implements FilenameFilter { public boolean accept(File dir,String name) { boolean boo=false; if(name.endsWith(".jpg")||name.endsWith(".JPG")) boo=true; return boo...

    IO输入输出留

    listFiles(FilenameFilter) 文件属性过滤器 public class Test1 { public static void main(String[] args) { test1(); } /////////////////////2014-8-23文件筛选操作 private static void test1()...

Global site tag (gtag.js) - Google Analytics