1 package Io; 2 3 import java.io.File; 4 import java.io.FilenameFilter; 5 6 public class TestFile3 { 7 public static void main(String[] args) { 8 new TestFile3().run(); 9 System.out.println("----------------"); 10 new TestFile3().run2(); 11 } 12 13 // 不是static型所以要用对象来访问。 14 public void run() { 15 File f = new File("G:\BaiduYunDownload"); 16 String[] fns = f.list(new JavaFilter()); 17 for (String fn : fns) { 18 System.out.println(fn); 19 } 20 } 21 22 /* 23 * 匿名的内部类,该类没有名称,实在代码返回之前就给他实现了 这种方式存在的唯一意义就是只有一个方法会涉及到该类才建议这样写 24 * 如果有两个或者多个方法,使用内部类 25 */ 26 public void run2() { 27 File f = new File("G:\BaiduYunDownload"); 28 String[] fns = f.list(new FilenameFilter() { 29 30 @Override 31 public boolean accept(File dir, String name) { 32 if (name.endsWith("rar")) 33 return true; 34 else 35 return false; 36 } 37 }); 38 for (String fn : fns) { 39 System.out.println(fn); 40 } 41 } 42 43 /** 44 * 如果这个类仅仅只是在某个类的内部可以访问,可以直接将该类写在类的内部 这个类在外部就无法访问,这种类叫内部类。 45 * 内部类要在static之后才能声明,所以不能在static的方法中使用内部类。 46 * 47 * @author Samuel 48 */ 49 class JavaFilter implements FilenameFilter { 50 @Override 51 public boolean accept(File dir, String name) { 52 if (name.endsWith("zip")) 53 return true; 54 else 55 return false; 56 } 57 } 58 }