Java IO 之 FileFilter与FilenameFilter

FileFilter与FilenameFilter可以实现对文件的过滤,他们都是接口,具体的过滤规则需要我们自己编写

1、FileFilter

 1 package org.zln.io.file;
 2 
 3 import java.io.File;
 4 import java.io.FileFilter;
 5 
 6 /**
 7  * 拓展名过滤器 只返回指定拓展名的文件
 8  * Created by coolkid on 2015/6/21 0021.
 9  */
10 public class ExtensionFilter implements FileFilter{
11 
12     //拓展名
13     private String extension;
14 
15     public ExtensionFilter(String extension) {
16         this.extension = extension;
17     }
18 
19     @Override
20     public boolean accept(File file) {
21         boolean result = false;
22 
23         if (file.isDirectory()){//目录 过滤掉
24             result = false;
25         }else {
26             String fileName = file.getName();//文件名  不是全路径
27             int index = fileName.lastIndexOf(".");
28             if (index == -1){
29                 result = false;
30             }else if (index == fileName.length()-1){
31                 result = false;
32             }else {
33                 if (this.extension.equalsIgnoreCase(fileName.substring(index+1))){
34                     result = true;
35                 }
36             }
37         }
38         return result;
39     }
40 }
E:GitHub oolsJavaEEDevelopLesson1_JavaSe_Demo1srcorgzlniofileExtensionFilter.java

测试代码

1         File file = new File("E:\GitHub\tools");
2         File[] files = file.listFiles(new ExtensionFilter("bat"));
3         for (File file1:files){
4             System.out.println(file1.getAbsolutePath());
5         }

只有拓展名为 bat的文件才会被过滤出来,其他扩展名的文件以及文件夹不会被listFiles出来

在此时的逻辑上,我们是根据拓展名来过滤的,当然,如果实际需要,我们也可以根据文件的其他属性进行过滤


2、FilenameFilter

 1 package org.zln.io.file;
 2 
 3 import java.io.File;
 4 import java.io.FilenameFilter;
 5 
 6 /**
 7  * 图片过滤器
 8  * Created by coolkid on 2015/6/21 0021.
 9  */
10 public class ImageFilter implements FilenameFilter {
11 
12     public boolean isGif(String filename){
13         if (filename.toLowerCase().endsWith(".gif")){
14             return true;
15         }else {
16             return false;
17         }
18     }
19 
20     public boolean isJpg(String filename){
21         if (filename.toLowerCase().endsWith(".jpg")){
22             return true;
23         }else {
24             return false;
25         }
26     }
27 
28     public boolean isPng(String filename){
29         if (filename.toLowerCase().endsWith(".png")){
30             return true;
31         }else {
32             return false;
33         }
34     }
35 
36 
37     @Override
38     public boolean accept(File dir, String name) {
39         System.out.println("DIR:"+dir.getAbsolutePath());
40         return isGif(name)||isJpg(name)||isPng(name);
41     }
42 }
E:GitHub oolsJavaEEDevelopLesson1_JavaSe_Demo1srcorgzlniofileImageFilter.java

通常使用 FilenameFilter 对文件进行过滤

原文地址:https://www.cnblogs.com/sherrykid/p/4592013.html