FilenameFilter的使用

来源:互联网 发布:索尼c6802怎么清除数据 编辑:程序博客网 时间:2024/06/05 05:55

使用FilenameFilter查找目录列表中的.java的文件

类DirFilter 实现了FilenameFilter 主要是使list()方法能够回调accept()方法

package com.cmsz;import java.io.File;import java.io.FilenameFilter;import java.util.regex.Pattern;public class DirFilter implements FilenameFilter {private String type;public DirFilter(String type){this.type=type;}@Overridepublic boolean accept(File dir, String name) {return name.toLowerCase().endsWith(type);}}
测试类
package com.cmsz;import java.io.File;import java.io.FilenameFilter;import java.util.Arrays;public class DirList {public static void main(String[] args) {File path=new File(".");String[] list=path.list(new DirFilter(".java"));//调用FilenameFilter accept()回调函数 判断。for(String name:list){System.out.println(name);}}}


当然也可以使用匿名内部类,但需要主要的是使用匿名内部类定义的方法的参数必须是final类型的。

package com.cmsz;import java.io.File;import java.io.FilenameFilter;import java.util.Arrays;public class DirList {public static FilenameFilter file(final String type){return new FilenameFilter(){public boolean accept(File file,String name){return name.toLowerCase().endsWith(type);}};}public static void main(String[] args){File path=new File(".");String[] list=path.list(file(".java"));for(String filename:list){System.out.println(filename);}}}



当然为了使代码量更小,也可以在list()方法里面写匿名内部类。
package com.cmsz;import java.io.File;import java.io.FilenameFilter;import java.util.Arrays;public class DirList {public static void main(String[] args){File path=new File(".");final String type=".java";//匿名内部类参数需要是final类型的String[] list=path.list(new FilenameFilter(){public boolean accept(File file,String name){return name.toLowerCase().endsWith(type);}});for(String name:list){System.out.println(name);}}}



0 0