在java.io中類File有兩個方法list和listFiles
list()方法:
1 public void test() { 2 File file = new File("E:/syl"); 3 // String[] list() 4 // 返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。 5 String[] list = file.list(); 6 for (String f : list) { 7 System.out.println(f); 8 } 9 }
運行結果:
listFiles()方法:
1 public void test() { 2 File file = new File("E:/syl"); 3 // File[] listFiles() 4 // 返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。 5 File[] list = file.listFiles(); 6 for (File f : list) { 7 System.out.println(f); 8 System.out.println("文件名:" + f.getName()); 9 System.out.println("是否是一個目錄:" + f.isDirectory()); 10 // long length() 11 // 返回由此抽象路徑名表示的文件的長度。 12 System.out.println("文件的長度" + f.length() + "字節"); 13 System.out.println("-----------------"); 14 } 15 }
運行結果(部分):
想要在目錄中“返回滿足指定過濾器的文件和目錄”會用到list(FilenameFilter filter)和
listFiles(FilenameFilter filter)方法。
首先得實現java.io 中的FilenameFilter接口,可以創建一個外部類或內部類來實現此接口。
1 class HtmlFileFilter implements FilenameFilter {// 創建外部類或內部類實現此接口 2 @Override 3 // boolean accept測試指定文件是否應該包含在某一文件列表中。 4 public boolean accept(File dir, String name) { 5 // TODO Auto-generated method stub 6 if (name.endsWith(".html")) 7 return true; 8 return false; 9 } 10 }
實現FilenameFilter接口的HtmlFileFilter類實例可用於過濾器文件名(.html)。
1 public void test() { 2 File file = new File("E:/syl"); 3 String[] list = file.list(new HtmlFileFilter()); 4 System.out.println("路徑E:/syl中是HTML類型的有:"); 5 for (String f : list) { 6 System.out.println(f); 7 } 8 }
運行結果:
其中在實現FilenameFilter接口時,也可以使用匿名內部類的方式實現:
首先傳送大神的博客:java中的匿名內部類總結
1 import java.io.File; 2 import java.io.FilenameFilter; 3 4 public class TestFile { 5 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 File file = new File("E:/syl"); 9 // String[] list() 10 // 返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。 11 String[] list = file.list(new FilenameFilter() { 12 // 匿名內部類 13 @Override 14 public boolean accept(File dir, String name) { 15 // TODO Auto-generated method stub 16 if (name.endsWith(".html")) 17 return true; 18 return false; 19 } 20 21 }); 22 System.out.println("路徑E:/syl中是HTML類型的有:"); 23 for (String f : list) { 24 System.out.println(f); 25 } 26 } 27 28 }
運行結果同上,這樣代碼的編寫會簡化許多。