File相關工具類簡介及應用
阿新 • • 發佈:2018-12-07
查找出目錄下的檔案,並設定過濾規則
public class FileTest{ public void test() throws ParseException { // 查出路徑下的目錄 File directory = new File("D:\\test\\file"); // 目錄下的檔案集合 File[] fs = directory.listFiles(); // 定義過濾規則規則(建立過濾器) Date date = DateUtils.parseDate("2018-12-05 13:25:16", new String[]{"yyyy-MM-dd HH:mm:ss"}); // FileFilterUtils.and(IOFileFilter... filters),可傳遞多個過濾條件 IOFileFilter filefilter = FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter(".txt"), FileFilterUtils.ageFileFilter(date, false)); // 過濾後的檔案集合 File[] files = FileFilterUtils.filter(filefilter, fs); if (files.length > 0) { // doSomting... } } }
【一】File filter的作用
有時候,當我們在操作File物件時,只想針對某些特定的型別或者具備特定屬性的檔案。例如:只顯示java檔案,只顯示目錄,只顯示檔案....。在JDK中已經提供了這樣的工具,我們稱為File filter和Filename filter。
Apache commons IO對這個介面進行了擴充套件。
在此之下,衍生出了許多各種各樣的過濾器。它們可以分為兩大類:
①實質性過濾器:例如針對檔案的型別,屬性,名稱,大小進行過濾的過濾器
②過濾器聯結器:典型的包括AndFileFilter、OrFileFilter。用於邏輯連線多個過濾器
Apache commons IO為這麼多名目繁多的過濾器提供了一個工具類:FileFilterUtils
【二】FileFilterUtils簡介
FileFilterUtils提供了一系列的靜態方法,用於返回各種型別的過濾器,並組織它們。例如我需要過濾所有以"txt"結尾的檔案,不包括目錄,那麼使用FileFilterUtils,我可以這樣寫:
IOFileFilter fileOnlyFilter = FileFilterUtils.fileFileFilter(); IOFileFilter subfixFilter = FileFilterUtils.subfixFilter("txt"); IOFileFilter txtFileFilter = FileFilterUtils.andFileFilter(fileOnlyFilter, subfixFilter);