首頁(yè)技術(shù)文章正文

Java培訓(xùn):Java中遍歷目錄下的文件方法

更新時(shí)間:2022-10-11 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  File類的list()方法用于遍歷指定目錄下的所有文件。下面通過一個(gè)案例來演示如何使用list()方法遍歷目錄文件,如文件7-4所示。

import java.io.File;
public class Example03{
  public static void main(String[] args)throws Exception {
    // 創(chuàng)建File對(duì)象
    File file = new File("D:/IdeaWorkspace/chapter07");
    if(file.isDirectory()) { // 判斷File對(duì)象對(duì)應(yīng)的目錄是否存在
        String[] names = file.list(); // 獲得目錄下的所有文件的文件名
             for (String name : names) {
                  System.out.println (name);  //輸出文件名
             }
    }
  }
}

  文件7-4 Example03.java

  文件7-4的運(yùn)行結(jié)果如圖7-6所示。

  在文件7-4中,第5行代碼創(chuàng)建了一個(gè)File對(duì)象,并指定了一個(gè)路徑,通過調(diào)用File的isDirectory()方法判斷路徑指向的是否為存在的目錄,如果存在就調(diào)用list()方法,獲得一個(gè)String類型的數(shù)組names,數(shù)組中包含這個(gè)目錄下所有文件的文件名。接著通過循環(huán)遍歷數(shù)組names,依次打印出每個(gè)文件的文件名。

  文件7-4實(shí)現(xiàn)了遍歷一個(gè)目錄下所有文件的功能,然而有時(shí)程序只是需要得到指定類型的文件,如獲取指定目錄下所有的“.java”文件。針對(duì)這種需求,F(xiàn)ile類中提供了一個(gè)重載的list(FilenameFilter filter)方法,該方法接收一個(gè)FilenameFilter類型的參數(shù)。FilenameFilter是一個(gè)接口,稱為文件過濾器,當(dāng)中定義了一個(gè)抽象方法accept(File dir,String name)。在調(diào)用list()方法時(shí),需要實(shí)現(xiàn)文件過濾器FilenameFilter,并在accept()方法中做出判斷,從而獲得指定類型的文件。

  為了讓初學(xué)者更好地理解文件過濾的原理,接下來分步驟分析list(FilenameFilter filter)方法的工作原理。

  (1)調(diào)用list()方法傳入FilenameFilter文件過濾器對(duì)象。

  (2)取出當(dāng)前File對(duì)象所代表目錄下的所有子目錄和文件。

  (3)對(duì)于每一個(gè)子目錄或文件,都會(huì)調(diào)用文件過濾器對(duì)象的accept(File dir,String name)方法,并把代表當(dāng)前目錄的File對(duì)象以及這個(gè)子目錄或文件的名字作為參數(shù)dir和name傳遞給方法。

  (4)如果accept()方法返回true,就將當(dāng)前遍歷的這個(gè)子目錄或文件添加到數(shù)組中,如果返回false,則不添加。

1665452885275_圖7-6.jpg

  圖7-6 文件7-4的運(yùn)行結(jié)果

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!