フィルタの使用方法

1830 ワード

package cn.dali3.code15;

import java.io.File;
import java.io.FileFilter;

/*      
 *
 *   ,     A       .java      
 *
 *  File  ,listFiles       
 * 1.public File[] listFiles(FileFilter filter)
 * 2.public File[] listFiles(FilenameFilter filter)
 *
 *   1:
 *   :FileFilter  
 *       FileFilter     ,        accept   boolean accept(File pathname);
 *                    ,    accept  。
 *         
 *       File [] file = f1.listFiles(new FilefilterImpl());
 *              listFiles   。
 * listFiles            File         accept      
 *   accept  true, listFiles     File    File   ,  False     。
 * accept                。
 *
 *   2:
 *   FilenameFilter filter
 *       FilenameFilter              boolean accept(File dir,String name)
 *       dir    name      ,      
 *           
 *
 *                          lambda   
 * */
public class Demo01 {
    public static void main(String[] args) {
        getAllJava02("C:\\Users\\Administrator\\Desktop\\A");
    }

    private static void getAllJava(String str) {
        File f1 = new File(str);
        File[] file = f1.listFiles(new FilefilterImpl());
        for (File file1 : file) {
            if (file1.isDirectory()) {
                getAllJava(file1.getPath());
            } else {
                System.out.println(file1);
            }
        }
    }

    private static void getAllJava02(String str) {
        File f1 = new File(str);
        File[] file = f1.listFiles(
                (File pathname) -> (pathname.isDirectory() || pathname.getName().toLowerCase().endsWith(".java"))
        );
        for (File file1 : file) {
            if (file1.isDirectory()) {
                getAllJava(file1.getPath());
            } else {
                System.out.println(file1);
            }
        }
    }
}