import java.util.regex.Pattern; import java.io.File; import java.io.FilenameFilter; public class Test { public static void main(String[] args) { DirList.test(); DirList2.test(); DirList3.test(); } } //方案一:實現一個FilenameFilter接口的類 class DirFilter implements FilenameFilter { private Pattern pattern; public DirFilter(String regex) { pattern=Pattern.compile(regex); } @Override public boolean accept(File dir, String name) { return pattern.matcher(name).matches(); } } class DirList { public static void test() { File path = new File("./src"); String[] list=path.list(new DirFilter("java$")); System.out.println("DirList:"+list.length); } } //方案二:使用匿名內部類 class DirList2 { private static FilenameFilter filter(String regex) { return new FilenameFilter() { Pattern pattern = Pattern.compile(regex); @Override public boolean accept(File dir, String name) { return pattern.matcher(name).matches(); } }; } public static void test() { File file = new File("./src"); String[] list = file.list(filter("java$")); System.out.println("DirList2:"+list.length); } } //方案三:使用匿名內部類 class DirList3 { public static void test() { File path = new File(".//src"); String[] list = path.list(new FilenameFilter() { private Pattern pattern = Pattern.compile("java$"); @Override public boolean accept(File dir, String name) { return pattern.matcher(name).matches(); } }); System.out.println("DirList3:"+list.length); } }