`

FilenameFilter接口的用法(转)

阅读更多
使用FilenameFilter实现图片过滤,只要.gif,.jpg,.png文件。
public 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);    
        }    
    }    
}    
ImageFilter 类对象的任务就是提供一个accept( )的方法。之所以要创建这个类,就是要给list( )提供一个accept( )方法,这样当list( )判断该返回哪些文件名的时候,能够"回过头来调用"accept( )方法。因此,这种结构通常被称为回调(callback)。更准确地说,由于list( )实现了基本功能,而FilenameFilter提供了"对外服务所需的算法",因此这是一种"策略模式(Strategy Pattern)"。由于list( )拿FilenameFilter对象当参数,因此你可以将任何实现FilenameFilter接口的对象传给它,并以此(甚至是在运行时)控制list( )的工作方式。回调能提高程序的灵活性。
分享到:
评论

相关推荐

    FilenameFilter的用法

    FilenameFilter接口非常简单,仅包含一个方法:`boolean accept(File dir, String name)`。这个方法接收两个参数: 1. **dir**:`java.io.File`类型的对象,表示正在被遍历的目录。 2. **name**:`String`类型,...

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

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

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

    我们首先创建了一个 FileNameFilterTest 类,实现了 FilenameFilter 接口,然后重写了 accept 方法。在该方法中,我们首先判断文件名是否以 gif、jpg、png 结尾,如果是则返回 true,否则返回 false。 使用 ...

    Java毕业设计外文翻译

    该示例展示了如何使用匿名内部类来实现FilenameFilter接口,并通过File类的list()方法获取目录列表。具体步骤如下: 1. **定义FilenameFilter接口的实现**:通过创建匿名内部类实现FilenameFilter接口,其中`accept...

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

    在上面的示例中,我们定义了一个内部类FileFilter,它实现了FilenameFilter接口。在accept方法中,我们通过文件名的后缀来判断文件是否满足过滤规则。如果文件名最后一个‘.’字符的索引大于0,我们就截取文件名的...

    文件名过滤器

    // 实现FilenameFilter接口的方法,判断文件名是否以指定的扩展名结尾 @Override public boolean accept(File directory, String filename) { return filename.endsWith("." + extension); } } } ``` #### ...

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

    `DirFilter`类实现了FilenameFilter接口,它的`accept`方法用于决定是否接受指定的文件名。 理解Java I/O类库的历史演变对于有效地使用这些类至关重要,因为这有助于开发者理解为何某些类存在,以及何时应使用它们...

    Java IO文件后缀名过滤总结

    FilenameFilter接口是Java IO包中用于过滤文件的接口,该接口提供了accept方法,该方法将File对象和文件名作为参数,并返回一个布尔值,表示当前文件是否满足过滤条件。 二、FilenameFilter接口的使用 在上面的...

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

    当我们在 `java.io.File` 类上调用 `list(FilenameFilter filter)` 方法时,我们需要提供一个实现了 `FilenameFilter` 接口的类实例。这个接口定义了一个方法 `accept(File dir, String name)`,该方法需要判断指定...

    Java外文翻.doc

    根据提供的文档信息,我们可以归纳出以下关键知识点: ### 1. Java I/O 系统概述 - **背景**: Java I/O 系统的设计对于编程语言的设计者来说是一项极...对于开发者而言,熟悉这些类库的功能和使用方法是非常重要的。

    【经典外文翻译】-java(译文-英文)毕业论文.doc

    在 Java 中,还有一个非常重要的类就是 FilenameFilter 接口,它是一个专门负责挑选显示 File 对象的内容的类。 FilenameFilter 接口可以用来实现目录过滤器,例如,挑选出所有扩展名为.java 的文件。 在 Java 中,...

    read-all-txt-from-the-file-use-java.zip_java txt

    3. **FilenameFilter接口**: - 这个接口只有一个方法`accept(File dir, String name)`,通过实现这个方法可以指定文件名的筛选规则。在这个例子中,我们可能通过检查文件名的后缀是否为".txt"来决定是否接受。 4....

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

    2. **FilenameFilter接口**:当需要过滤特定类型的文件(例如,只查找.java源代码文件)时,可以实现`java.io.FilenameFilter`接口并自定义过滤逻辑。例如,我们可以创建一个过滤器,只允许扩展名为`.java`的文件...

    java基础知识笔记总结

    - 类实现接口需要实现接口中所有的抽象方法。 13. **面向接口编程之制定标准和简单工厂模式** - 面向接口编程强调编程时依赖于抽象而不是具体实现。 - 简单工厂模式用于创建对象而不暴露创建逻辑。 14. **面向...

    java精华总结

    实现接口的类必须提供接口中所有方法的具体实现。 ##### 13. 面向接口编程之制定标准和简单工厂模式 面向接口编程强调的是通过接口进行编程,而不是通过实现进行编程。 ##### 14. 面向接口编程之适配器模式 ...

    Java毕业设计外文翻译.doc

    FilenameFilter 接口是一个专门负责挑选显示 File 对象的内容的类。它的 accept() 方法需要两个参数,一个是 File 对象,表示这个文件是在哪个目录里面的;另一个是 String,表示文件名。虽然你可以忽略它们中的一个...

    黑马程序员入学Java精华总结

    - 使用String类提供的`valueOf()`方法或基本类型的`toString()`方法进行转换。 4. **Object类** - Object是所有Java类的根类,提供了一些基本方法。 5. **代码块** - 代码块用于初始化对象的某些部分。 6. **...

    通配符比较

    例如,`list(FilenameFilter)`允许我们传入一个实现了`FilenameFilter`接口的类实例,该接口的`accept()`方法可以定义我们的通配符规则。例如,如果我们想找到所有以".txt"结尾的文件,我们可以创建一个过滤器: ``...

Global site tag (gtag.js) - Google Analytics