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 }
测试代码
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 }
通常使用 FilenameFilter 对文件进行过滤