java_IO_File(2)过滤器应用
需求:1,输出一个目录下的特定类型文件。
2,输出一个目录下的特定属性文件。
分析:File.list(),以字符串数组返回当前目录下文件。
File.listlistFiles(),以File返回当前目录下文件。
接口FilenameFilter,FileFilter。具有过滤器接口的类 可作为参数添加到list(), listFile()中,返回过滤后的对象。
1 package File; 2 3 import java.io.File; 4 import Filter.FilterByHidden; 5 import Filter.FilterByJava; 6 import Filter.SuffixFilter; 7 8 public class FileList { 9 10 public static void main(String[] args) { 11 12 //listDemo(); //输出D盘下的所有文件、文件夹 13 //listDemo2(); //输出D盘下.java文件 14 //listDemo3(); //输出D盘下的非隐藏文件 15 listDemo4(); //输出D盘下任何类型文件 16 } 17 18 private static void listDemo4() { 19 File file = new File("D:\\"); 20 String names2[]= file.list(new SuffixFilter(".txt")); 21 for(String name:names2) 22 System.out.println(name); 23 24 } 25 26 private static void listDemo3() { 27 28 File file = new File("c:\\"); 29 File[] names = file.listFiles(new FilterByHidden()); 30 31 for(File name:names){ 32 System.out.println(name); 33 } 34 35 36 37 } 38 39 public static void listDemo2() { 40 File file = new File("D:\\"); 41 String names2[]= file.list(new FilterByJava()); 42 for(String name:names2) 43 System.out.println(name); 44 45 } 46 47 private static void listDemo() { 48 File file = new File("D:\\"); 49 String names[] = file.list(); 50 for(String name:names) 51 System.out.println(name); 52 53 } 54 55 56 }
package Filter; import java.io.File; import java.io.FilenameFilter; public class FilterByJava implements FilenameFilter { public boolean accept(File dir, String name) { return name.endsWith(".java"); } }
1 package Filter; 2 3 import java.io.File; 4 import java.io.FilenameFilter; 5 6 public class SuffixFilter implements FilenameFilter { 7 8 private String suffix; 9 //重写构造方法,被调用时可直接传入过滤的文件类型。 10 public SuffixFilter(String suffix) { 11 super(); 12 this.suffix = suffix; 13 } 14 15 public boolean accept(File dir, String name) { 16 return !name.endsWith(suffix); 17 } 18 19 }
1 package Filter; 2 3 import java.io.File; 4 import java.io.FileFilter; 5 import java.io.FilenameFilter; 6 7 public class FilterByHidden implements FileFilter { 8 9 10 public boolean accept(File pathname) { 11 12 return pathname.isHidden(); 13 14 } 15 16 }