`
AutomaticThoughts
  • 浏览: 162329 次
社区版块
存档分类
最新评论

FilenameFilter的几种基本用法

    博客分类:
  • Java
 
阅读更多

现在假设我们想观看一个目录列表。可用两种方式列出File对象。若在不含自变量(参数)的情况下调用list(),会获得File对象包含的一个完整列表。然而,若想对这个列表进行某些限制,就需要使用一个“目录过滤器”,该类的作用是指出应如何选择File对象来完成显示。
下面是用于这个例子的几段代码:

package IO;

import java.io.File;
import java.io.FilenameFilter;

class ImageFilter implements FilenameFilter{ 
 
 public boolean isGif(String file) { 
 if (file.toLowerCase().endsWith(".gif")){ 
 return true; 
 }else{ 
 return false; 
 } 
 } 
 public boolean isJpg(String file){ 
 if (file.toLowerCase().endsWith(".jpg")){ 
 return true; 
 }else{ 
 return false; 
 } 
 } 
 
 public boolean isPng(String file){ 
 if (file.toLowerCase().endsWith(".png")){ 
 return true; 
 }else{ 
 return false; 
 } 
 } 
 public boolean accept(File dir,String fname){ 
 return (isGif(fname) || isJpg(fname) || isPng(fname)); 
 
 } 
 

public class ImageFilterTest{ 
 public static void main(String[] args){ 
 File directory=new File("E:\\program\\FilenameFilter\\images"); 
 String[] images = directory.list(new ImageFilter()); 
 System.out.println("size="+images.length); 
 for (int i = 0; i < images.length; i++){ 
 String imgfile=images[i]; 
 System.out.println("imgfile="+imgfile); 
 } 
 } 
}
下例用一个匿名内部类(已在第7章讲述)来重写显得非常理想。首先创建了一个filter()方法,它返回指向FilenameFilter的一个句柄:

package IO;

import java.io.File;
import java.io.FilenameFilter;

public class ImageFilterTestInner {
public static FilenameFilter filter(final String afn){
 return new FilenameFilter(){
 public boolean isGif(String file){
 if(file.toLowerCase().endsWith(".gif")){
 return true;
 }else{
 return false;
 }
 }
 public boolean isJpg(String file){ 
 if (file.toLowerCase().endsWith(".jpg")){ 
 return true; 
 }else{ 
 return false; 
 } 
 } 
 
 public boolean isPng(String file){ 
 if (file.toLowerCase().endsWith(".png")){ 
 return true; 
 }else{ 
 return false; 
 } 
 } 
 public boolean accept(File dir,String fname){ 
 return (isGif(fname) || isJpg(fname) || isPng(fname)); 
 } 
 
 };

 }
public static void main(String[] args){ 
 File directory=new File("E:\\program\\FilenameFilter\\images"); 
 String[] images = directory.list(new ImageFilter()); 
 System.out.println("size="+images.length); 
 for (int i = 0; i < images.length; i++){ 
 String imgfile=images[i]; 
 System.out.println("imgfile="+imgfile); 
 } 
 } 
}
注意filter()的自变量必须是final。这一点是匿名内部类要求的,使其能使用来自本身作用域以外的一个对象。之所以认为这样做更好,是由于FilenameFilter类现在同ImageFilterTestInner 紧密地结合在一起。然而,我们可采取进一步的操作,将匿名内部类定义成list()的一个参数,使其显得更加精简。如下所示:

package IO;

import java.io.File;
import java.io.FilenameFilter;

public class ImageFilterTestInner1 {
public static void main(String[] args){ 
 File directory=new File("E:\\program\\FilenameFilter\\images"); 
 String[] images = directory.list(new FilenameFilter(){
 public boolean accept(File dir,String fname){
 return (isGif(fname) || isJpg(fname) || isPng(fname)); 
 }
 public boolean isGif(String file){
 if(file.toLowerCase().endsWith(".gif")){
 return true;
 }else{
 return false;
 }
 }
 public boolean isJpg(String file){ 
 if (file.toLowerCase().endsWith(".jpg")){ 
 return true; 
 }else{ 
 return false; 
 } 
 } 
 
 public boolean isPng(String file){ 
 if (file.toLowerCase().endsWith(".png")){ 
 return true; 
 }else{ 
 return false; 
 } 
 } 
 }); 
 System.out.println("size="+images.length); 
 for (int i = 0; i < images.length; i++){ 
 String imgfile=images[i]; 
 System.out.println("imgfile="+imgfile); 
 } 
 } 
}

分享到:
评论

相关推荐

    FilenameFilter的用法

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

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

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

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

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

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

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

    Jsoup学习——Saz2Csv解析器

    5、Java中字符串的处理:String类和StringBuffer类,substring()、indexOf()、lastIndexOf()、replace()、replaceAll()、trim()、toLowerCase()、endsWith()、equals()、split()等方法的使用 6、Java类集:List,...

    java实现的文件搜索器

    java的FilenameFilter实现的文件过滤

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

    概念:是一种思想,也是一种算法。在方法内部调用自己的方法。(自己干自己) 2. 作用:就是简化有相似的业务逻辑(循环)代码。 3. 使用规律特点: 1. 通过数值带入的方式,查找逻辑规律: 将所有的...

    kremote-files:KRemote Files是一个安全的开放源代码框架,它允许非常轻松地编程远程文件访问,文件上载下载和通过HTTP进行RPC。 文件传输包括强大的功能,例如文件分块和自动恢复机制

    KRemote Files v1.0-用户指南 服务器文件管理器servlet 配置webapp web.xml 配置器基础 FileConfigurator界面 ...使用FilenameFilter和FileFilter 处理RemoteFile方法引发的异常 使用RemoteFile的示例 RemoteIn

    JDK_API_1_6

    ObjectInputStream ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。 ObjectInputStream.GetField 提供对从输入流读取的持久字段的访问权限。 ObjectOutputStream ...

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

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

    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....

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

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

    IO输入输出留

    // 使用renameto方法 System.out.println("文件名是否更改成功:" + f1.renameTo(f2)); // 改名以后的的状态 System.out.println(f1.getName() + "是否存在" + f1.exists()); System.out.println(f2....

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

    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; } } public ...

    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 ...

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

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

    Android 简单的录音机

    今天在做一个简单的录音机的时候,录音机老是无法正常实例化,不能使用,后来查找问题,一个一个的试,最后确定了,原来是两个设置写反了,却造成了,无法正常工作,真是郁闷啊。找了一个教程看了一下,教程中也没有...

    JavaRegexFilenameFilter-开源

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

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

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

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

    图片浏览器 (后面附有完整代码) 一、需求分析 1、首先。... } } private File[] initImageSets1(File pictureDir){ return pictureDir.listFiles(new FilenameFilter(){ public boolean accept(File dir,Strin

Global site tag (gtag.js) - Google Analytics