`
l514941630
  • 浏览: 46096 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

FilenameFilter的几种基本用法

阅读更多
现在假设我们想观看一个目录列表。可用两种方式列出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