`

FilenameFilter的使用

阅读更多

使用FilenameFilter实现图片过滤,只要.gif,.jpg,.png文件。

java 代码
  1. public class ImageFilter  implements FilenameFilter{   
  2.   
  3.   public boolean isGif(String file) {   
  4.     if (file.toLowerCase().endsWith(".gif")){   
  5.       return true;   
  6.     }else{   
  7.       return false;   
  8.     }   
  9.   }   
  10.   public boolean isJpg(String file){   
  11.     if (file.toLowerCase().endsWith(".jpg")){   
  12.       return true;   
  13.     }else{   
  14.       return false;   
  15.     }   
  16.   }   
  17.   
  18.   public boolean isPng(String file){   
  19.     if (file.toLowerCase().endsWith(".png")){   
  20.       return true;   
  21.     }else{   
  22.       return false;   
  23.     }   
  24.   }   
  25.   public boolean accept(File dir,String fname){   
  26.     return (isGif(fname) || isJpg(fname) || isPng(fname));   
  27.   
  28.   }   
  29.   
  30. }   
  31.   

程序测试类:

java 代码
  1. public class ImageFilterTest{   
  2.     public static void main(String[] args){   
  3.         File directory=new File("E:\\program\\FilenameFilter\\images");   
  4.         String[] images = directory.list(new ImageFilter());   
  5.         System.out.println("size="+images.length);   
  6.         for (int i = 0; i < images.length; i++){   
  7.              String imgfile=images[i];   
  8.              System.out.println("imgfile="+imgfile);   
  9.         }   
  10.     }   
  11. }   

ImageFilter 类对象的任务就是提供一个accept( )的方法。之所以要创建这个类,就是要给list( )提供一个accept( )方法,这样当list( )判断该返回哪些文件名的时候,能够"回过头来调用"accept( )方法。因此,这种结构通常被称为回调(callback)。更准确地说,由于list( )实现了基本功能,而FilenameFilter提供了"对外服务所需的算法",因此这是一种"策略模式(Strategy Pattern)"。由于list( )FilenameFilter对象当参数,因此你可以将任何实现FilenameFilter接口的对象传给它,并以此(甚至是在运行时)控制list( )的工作方式。回调能提高程序的灵活性。

分享到:
评论

相关推荐

    FilenameFilter的用法

    该接口通常与`java.io.File`类中的`list(FilenameFilter filter)`和`listFiles(FilenameFilter filter)`方法结合使用,帮助开发者根据特定条件筛选出文件列表。 #### 二、FilenameFilter接口定义 FilenameFilter...

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

    例如,我们可以使用 FileFilter 来过滤某个目录下的所有文件,然后使用 FilenameFilter 来过滤文件名,找到符合条件的文件。 优点 使用 FileFilter 和 FilenameFilter 有很多优点,例如: * 可以实现文件的过滤、...

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

    下面我们将详细讨论`FilenameFilter`接口的工作原理、如何使用以及它的实际应用。 `FilenameFilter`接口定义了一个单一的方法: ```java boolean accept(File dir, String name); ``` - `dir`: 代表当前正在检查...

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

    "Java使用FilenameFilter查找出目录下指定后缀的文件示例" Java语言中,FilenameFilter是一个非常有用的类,主要用于文件遍历和查找操作。今天,我们将通过一个实例,介绍如何使用FilenameFilter查找出目录下指定...

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

    在给定的标题和描述中,我们关注的是如何使用 `FilenameFilter` 来查看并列出只包含 `.java` 文件的列表。`list()` 方法是这个过程的关键,它会返回指定目录下符合过滤条件的所有文件名。 首先,我们需要了解 `...

    Java文件File的使用及I/O的使用

    - `list(FilenameFilter)`:使用自定义的过滤器获取目录下符合条件的文件和目录。 - `lastModified()`:获取文件的最后修改时间。 - `length()`:获取文件的大小(字节)。 - `getName()`:获取文件的名称。 在实际...

    java中如何使用过滤器过滤指定格式的文件

    然后,我们使用`listFiles`方法并传入我们的`TxtFileFilter`实例,这将返回一个`File`数组,其中包含满足过滤条件的所有文件。如果目录为空或不存在,`listFiles`会返回`null`,所以我们需要进行判断。最后,我们...

    java IO详解课件

    - **FilenameFilter接口的用途**:`FilenameFilter`接口用于过滤文件名,通常与`File`类的`list()`方法一起使用,以便只返回满足特定条件的文件名。 - **FilenameFilter接口的实现**: - 实现`FilenameFilter`接口...

    通配符比较

    标题中的“通配符比较”指的是在编程中使用特定的字符模式(通配符)来匹配和查找符合特定规则的字符串。...在Java中,通过`File`类和`FilenameFilter`接口,或者使用正则表达式,我们可以方便地实现这一功能。

    文件名过滤器

    通过上述示例,我们可以看到如何利用Java的`FilenameFilter`接口来创建自定义的文件名过滤器,并使用这些过滤器来高效地筛选出符合特定条件的文件。这对于处理大量文件时尤其有用,可以帮助我们更快地找到需要处理的...

    Java外文翻.doc

    - **兼容性和性能考量**: 在选择使用旧版 I/O 类库还是新版 nio 时,开发者需要考虑兼容性和性能因素。通常情况下,nio 提供了更好的性能,但在某些场景下可能需要使用旧版 I/O 类库以确保向后兼容性。 通过上述...

    2022年Java基础面试题.doc

    总结以上,Java基础面试题主要涉及文件操作(获取路径、创建目录、读写文件)、过滤器的使用(如`FilenameFilter`)以及序列化和反序列化的概念。在实际开发中,这些基础知识是构建可靠和高效Java应用程序的基础。...

    根据后缀名获取文件列表

    2. **listFiles(FilenameFilter)**:此方法允许我们传递一个`FilenameFilter`对象,它定义了文件名是否应包含在结果列表中的逻辑。通过自定义`FilenameFilter`,我们可以根据文件的后缀名筛选文件。 下面是一个简单...

    Java毕业设计外文翻译.doc

    在使用 File 类时,我们可以使用匿名内部类来创建一个 FilenameFilter,例如: ```java public class DirList2 { public static FilenameFilter filter(final String afn) { return new FilenameFilter() { ...

    java经典算法合集

    我们使用FilenameFilter接口来过滤文件,仅保留.java文件。然后,我们使用FileInputStream和FileOutputStream类来复制文件,并将文件扩展名从.java改为.jad。 在main函数中,我们使用File类来创建文件对象,并使用...

    Java免费范文精选.docx

    以下是一个简单的示例,展示了如何使用匿名内部类创建一个过滤`.java`文件的`FilenameFilter`: ```java import java.io.*; public class DirList2 { public static FilenameFilter filter(String extension) { ...

    --java(译文+英文)—-毕业论文设计.docx

    以下是一个简单的示例,展示了如何使用File类和FilenameFilter接口列出并过滤目录中的文件: ```java import java.io.File; import java.io.FilenameFilter; public class DirList { public static void main...

    Java 实例 - 在指定目录中查找文件源代码-详细教程.zip

    本教程将深入探讨如何使用Java实现这一功能。首先,我们需要了解Java中与文件操作相关的类,如`File`、`Files`和`DirectoryStream`。 1. **File类**:`java.io.File`是Java中的核心类,用于表示文件和目录路径名的...

    如何在java中打开文件

    #### 知识点一:使用AWT库中的`FileDialog`与`FilenameFilter`类实现文件打开功能 在Java早期版本中,可以通过使用AWT(Abstract Window Toolkit)库来创建文件打开对话框。具体而言,`FileDialog`类用于展示一个...

Global site tag (gtag.js) - Google Analytics