標籤:
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 @Override20 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\tools\JavaEEDevelop\Lesson1_JavaSe_Demo1\src\org\zln\io\file\ExtensionFilter.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 @Override38 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\tools\JavaEEDevelop\Lesson1_JavaSe_Demo1\src\org\zln\io\file\ImageFilter.java
通常使用 FilenameFilter 對檔案進行過濾
Java IO 之 FileFilter與FilenameFilter