Java遞迴遍歷資料夾及檔案過濾器使用(FileFilter)

sust_ly發表於2018-08-01

遞迴遍歷資料夾:

public static void main(String[] args) {
        getFile(new File("D:\\eclipsevaadinxu\\works\\test"));
    }
    /**
     * @author admin
     * @param file
     * 遞迴遍歷資料夾
     */
    public static void getFile(File file) {
        if (file.isDirectory()) {
            File[] filelist = file.listFiles(new MyFileFilter());
            //如果是一個資料夾,則呼叫其listFiles方法獲取資料夾下的檔案或資料夾的絕對路徑

            //使用檔案過濾器匿名物件
            for (File f : filelist) {//使用加強for遍歷                
                getFile(f);//遞迴呼叫
            }
        }
    }

檔案過濾器,FileFilter這個介面sun公司並沒有給我們實現類,所以我們可以自定義實現類,重寫accept方法,呼叫String類的endswith方法判斷檔案的型別,進行過濾。

public class MyFileFilter implements FileFilter {

    public boolean accept(File paramFile) {
        if (paramFile.isDirectory()) {
            return true;
        }
        else{
            String name = paramFile.getName();
            if(name.endsWith(".java")){
                System.out.println(paramFile);
                return true;
            }
        }
        return false;
    }

}

未過濾的檔案:

過濾後的檔案:

相關文章