JAVA之FileNameFilter兩種實現例項程式碼
阿新 • • 發佈:2018-12-19
0 引言
在學習流和檔案時發現檔案的過濾器只寫出了一種實現方式,即匿名類的實現。也可以通過實現FileNameFilter介面的方式完成過濾,特此以作記錄。
1 例項程式碼
1.1 匿名類的實現
package com.dh.ch08;/* @author cll @date 2018-11-04-10:59 */ import java.io.File; import java.io.FilenameFilter; public class FileListFilter { //main public static void main(String []args){ FilenameFilter filter = new FileFilterDemo(); //file File file = new File("E:/cll_workspace/python_ai/"); if(file.exists() && file.isDirectory()){ String[] FileNames = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) { System.out.println("dir"+dir+",name"+name); return (name.endsWith("py")); } }); for(String str:FileNames){ System.out.println("name:" +str); } } } }
1.2 介面實現方式
1.2.1 介面實現例項程式碼
類名為FileFilterDemo
package com.dh.ch08;/* @author cll @date 2018-11-04-11:04 */ import java.io.File; import java.io.FilenameFilter; public class FileFilterDemo implements FilenameFilter { public boolean accept(File file, String name){ return (name.endsWith("py")); } }
1.2.2 呼叫過濾器
package com.dh.ch08;/* @author cll @date 2018-11-04-10:59 */ import java.io.File; import java.io.FilenameFilter; public class FileListFilter { //main public static void main(String []args){ FilenameFilter filter = new FileFilterDemo(); //file File file = new File("E:/cll_workspace/python_ai/"); if(file.exists() && file.isDirectory()){ String[] FileNames = file.list(filter); for(String str:FileNames){ System.out.println("name:" +str); } } } }
2 總結
介面的實現方式,先宣告一個介面型別的變數,然後將實現該介面的類物件,將其作為引用賦值傳給變數。
String [] list(FileNameFilter filter)中傳入的引數是FileNameFilter的例項物件;