使用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接口非常简单,仅包含一个方法:`boolean accept(File dir, String name)`。这个方法接收两个参数: 1. **dir**:`java.io.File`类型的对象,表示正在被遍历的目录。 2. **name**:`String`类型,...
下面我们将详细讨论`FilenameFilter`接口的工作原理、如何使用以及它的实际应用。 `FilenameFilter`接口定义了一个单一的方法: ```java boolean accept(File dir, String name); ``` - `dir`: 代表当前正在检查...
我们首先创建了一个 FileNameFilterTest 类,实现了 FilenameFilter 接口,然后重写了 accept 方法。在该方法中,我们首先判断文件名是否以 gif、jpg、png 结尾,如果是则返回 true,否则返回 false。 使用 ...
该示例展示了如何使用匿名内部类来实现FilenameFilter接口,并通过File类的list()方法获取目录列表。具体步骤如下: 1. **定义FilenameFilter接口的实现**:通过创建匿名内部类实现FilenameFilter接口,其中`accept...
在上面的示例中,我们定义了一个内部类FileFilter,它实现了FilenameFilter接口。在accept方法中,我们通过文件名的后缀来判断文件是否满足过滤规则。如果文件名最后一个‘.’字符的索引大于0,我们就截取文件名的...
// 实现FilenameFilter接口的方法,判断文件名是否以指定的扩展名结尾 @Override public boolean accept(File directory, String filename) { return filename.endsWith("." + extension); } } } ``` #### ...
`DirFilter`类实现了FilenameFilter接口,它的`accept`方法用于决定是否接受指定的文件名。 理解Java I/O类库的历史演变对于有效地使用这些类至关重要,因为这有助于开发者理解为何某些类存在,以及何时应使用它们...
FilenameFilter接口是Java IO包中用于过滤文件的接口,该接口提供了accept方法,该方法将File对象和文件名作为参数,并返回一个布尔值,表示当前文件是否满足过滤条件。 二、FilenameFilter接口的使用 在上面的...
当我们在 `java.io.File` 类上调用 `list(FilenameFilter filter)` 方法时,我们需要提供一个实现了 `FilenameFilter` 接口的类实例。这个接口定义了一个方法 `accept(File dir, String name)`,该方法需要判断指定...
根据提供的文档信息,我们可以归纳出以下关键知识点: ### 1. Java I/O 系统概述 - **背景**: Java I/O 系统的设计对于编程语言的设计者来说是一项极...对于开发者而言,熟悉这些类库的功能和使用方法是非常重要的。
在 Java 中,还有一个非常重要的类就是 FilenameFilter 接口,它是一个专门负责挑选显示 File 对象的内容的类。 FilenameFilter 接口可以用来实现目录过滤器,例如,挑选出所有扩展名为.java 的文件。 在 Java 中,...
3. **FilenameFilter接口**: - 这个接口只有一个方法`accept(File dir, String name)`,通过实现这个方法可以指定文件名的筛选规则。在这个例子中,我们可能通过检查文件名的后缀是否为".txt"来决定是否接受。 4....
2. **FilenameFilter接口**:当需要过滤特定类型的文件(例如,只查找.java源代码文件)时,可以实现`java.io.FilenameFilter`接口并自定义过滤逻辑。例如,我们可以创建一个过滤器,只允许扩展名为`.java`的文件...
- 类实现接口需要实现接口中所有的抽象方法。 13. **面向接口编程之制定标准和简单工厂模式** - 面向接口编程强调编程时依赖于抽象而不是具体实现。 - 简单工厂模式用于创建对象而不暴露创建逻辑。 14. **面向...
实现接口的类必须提供接口中所有方法的具体实现。 ##### 13. 面向接口编程之制定标准和简单工厂模式 面向接口编程强调的是通过接口进行编程,而不是通过实现进行编程。 ##### 14. 面向接口编程之适配器模式 ...
FilenameFilter 接口是一个专门负责挑选显示 File 对象的内容的类。它的 accept() 方法需要两个参数,一个是 File 对象,表示这个文件是在哪个目录里面的;另一个是 String,表示文件名。虽然你可以忽略它们中的一个...
- 使用String类提供的`valueOf()`方法或基本类型的`toString()`方法进行转换。 4. **Object类** - Object是所有Java类的根类,提供了一些基本方法。 5. **代码块** - 代码块用于初始化对象的某些部分。 6. **...
例如,`list(FilenameFilter)`允许我们传入一个实现了`FilenameFilter`接口的类实例,该接口的`accept()`方法可以定义我们的通配符规则。例如,如果我们想找到所有以".txt"结尾的文件,我们可以创建一个过滤器: ``...