`
seven0_0
  • 浏览: 28018 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

学习笔记(file 与 filenameFilter)

    博客分类:
  • J2se
 
阅读更多
package com.trs.bwl;

import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;

public class DirList {

	public static void main(String[] args) {
		File path = new File("d:/");
		String[] list;
		list = path.list(new DirFilter(".*\\.txt"));
		Arrays.sort(list);
		for(int i = 0; i < list.length; i++) {
			System.out.println(i + ": " + list[i]);
		}
	}
	
}

class DirFilter implements FilenameFilter {
	
	private Pattern pattern;
	
	public DirFilter(String reg) {
		pattern = Pattern.compile(reg);
	}
	
	public boolean accept(File dir, String name) {
		return pattern.matcher(new File(name).getName()

).matches();
	}
	
}

 

public   interface   FilenameFilter   {
boolean   accept(文件目录,   字串名);
}

它指出这种类型的所有对象都提供了一个名为accept()的方法。之所以要创建这样的一个类,背后的全部原因就是把accept()方法提供给 list()方法,使list()能够“回调”accept(),从而判断应将哪些文件名包括到列表中。因此,通常将这种技术称为“回调”,有时也称为 “算子”(也就是说,DirFilter是一个算子,因为它唯一的作用就是容纳一个方法)。由于list()采用一个FilenameFilter对象作 为自己的自变量使用,所以我们能传递实现了FilenameFilter的任何类的一个对象,用它决定(甚至在运行期)list()方法的行为方式。回调 的目的是在代码的行为上提供更大的灵活性

 

源代码:

public   String[]   list(FilenameFilter   filter)   {
String   names[]   =   list();
if   ((names   ==   null)   ||   (filter   ==   null))   {
        return   names;
}
ArrayList   v   =   new   ArrayList();
for   (int   i   =   0   ;   i   <   names.length   ;   i++)   {
        if   (filter.accept(this,   names[i]))   {
v.add(names[i]);
        }
}
return   (String[])(v.toArray(new   String[0]));
        } 

 

下面是使用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);   
         }   
     }   
 }   

分享到:
评论

相关推荐

    FilenameFilter的用法

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

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

    此外,`FilenameFilter`还可以与其他Java I/O类结合使用,例如`FileInputStream`或`FileOutputStream`,在读写文件时进行过滤。这样,你可以在打开文件之前就确保它们是符合条件的。 总结来说,`FilenameFilter`...

    java中File类的使用方法 File类的

    Java 中 File 类的使用方法 Java 中的 File 类是 java.io 包中的一员,它提供了对文件和文件夹的操作。下面是对 File 类的使用方法的详细讲解。 构造函数 File 类有多个构造函数,分别是: * `public File...

    java file类的方法

    ### Java File 类的方法详解 #### 一、简介 在Java编程语言中,`java.io.File`类是一个非常重要的类,它提供了对文件和目录路径名的抽象表示,并且支持一些基本的操作,例如创建、删除文件或目录等。本文将详细...

    java学习笔记整理

    ### Java学习笔记整理 #### 1. Java简介 ##### 1.1 计算机编程和开发语言 计算机系统由硬件系统和软件系统组成。软件系统又进一步细分为系统软件和应用软件。其中,系统软件包括操作系统、编译系统、数据库系统等...

    学习笔记 java\CoreJava笔记\CoreJava_day20

    `FilenameFilter`接口:定义了一个方法`accept(File dir, String name)`,用于过滤目录中的文件或目录。可以配合`list()`和`listFiles()`方法使用,筛选出满足特定条件的文件。 8. **序列化与可序列化接口**: `...

    java File类

    `File`类还支持文件名过滤器,通过`list(FilenameFilter filter)`和`listFiles(FilenameFilter filter)`方法,可以筛选出满足特定条件的文件或目录。`FilenameFilter`是一个接口,实现该接口的对象可以定义一个`...

    Java 语言File类的详解

    - `File[] listFiles(FilenameFilter filter)`:列出符合过滤条件的文件和目录,FilenameFilter接口用于自定义过滤规则。 **七、文件的相对路径与绝对路径** - `String getAbsolutePath()`:获取文件的绝对路径。 -...

    Day36 Java的file类

    在Java中,`File`类位于`java.io`包中,用于封装文件和目录路径名,并提供了与文件系统交互的方法。它是一个非常重要的类,用于获取文件的各种属性以及进行基本的文件管理操作,如创建、删除文件或目录等。 #### 二...

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

    4.File[] listFiles(FilenameFilter filter) 获取根据文件名过滤后的文件对象 FilenameFilter:文件名过滤器接口 -----------------------------上面只能根据文件名或者文件夹名过滤,下面的...

    File类学习基础代码

    在Java编程语言中,`File`类是学习基础IO操作的重要部分。`File`类位于`java.io`包中,它提供了对文件和目录的基本操作,如创建、删除、重命名以及获取文件属性等。本篇文章将深入探讨`File`类的主要功能和使用方法...

    File类基本用法java-Eclipse

    在学习过程中,可能会遇到的一个常见问题是文件或目录的权限问题,确保你有正确的访问权限来执行相应的文件操作。同时,注意文件的读写操作可能导致数据丢失,因此在实际操作前应备份重要数据。 以上就是关于`File`...

    对File的各种操作

    `listFiles()`还可以接收一个`FilenameFilter`或`FileFilter`来过滤结果。 8. **创建、删除目录**: `mkdir()`和`mkdirs()`用于创建单级或多级目录,`delete()`和`deleteRecursively()`(在Java 7及以上版本)用于...

    javase-file.zip

    在Java编程中,当我们需要与文件系统进行交互,如创建、读取、写入、删除文件或目录时,都会用到`File`类。本压缩包`javase-file.zip`可能包含了一系列关于`File`类的示例代码或教程文档,帮助我们深入理解如何在...

    javaIO流笔记

    在Java中,输入/输出(Input/Output,简称IO)操作是程序与外部设备进行数据交换的重要方式。Java提供了强大的IO流处理类库,主要位于`java.io`包中。这些类库支持多种数据类型的操作,包括文本文件、二进制文件等。...

    示例1.1 File类操作文件

    虽然`File`类本身不提供读写文件的功能,但它可以与`FileInputStream`、`FileOutputStream`等流类配合,实现文件的读写操作。例如: ```java FileInputStream fis = new FileInputStream(file); ...

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

    FilenameFilter的accept方法将被传递两个参数:File dir和String name。其中,File dir是指文件所在的目录,而String name是文件名。accept方法返回一个布尔值,表明文件是否满足过滤规则。 下面是一个简单的示例...

    JavaSE基础知识笔记(下)

    JavaSE基础知识笔记 JavaSE基础知识笔记(下)中主要讲解了Java中的I/O流和...小知识:File与FileOutputStream都一样,在指定相对路径时,如果 "./" 不写,默认就表示当前目录,即“./fos.dat”等价于“fos.dat”。

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

    Java 文件过滤类 FileFilter 和 FilenameFilter Java 中的文件过滤类 FileFilter 和 FilenameFilter 是两个非常重要的接口,用于过滤文件和目录。它们广泛应用于文件管理、搜索、备份、数据分析等领域。 ...

Global site tag (gtag.js) - Google Analytics