如何在 Java 中獲取資料夾中所有檔案/資料夾的列表?


名為 File 的類屬於 java.io 包,它表示系統中的檔案或目錄(路徑名)。此類提供了各種方法來對檔案/目錄執行各種操作。

要獲取目錄中所有現有檔案的列表,此類提供了 files 類,它提供了 list()(返回名稱)和 ListFiles()(返回 File 物件),並具有不同的變體。

List() 方法

此方法返回一個字串陣列,其中包含當前(File)物件所表示的路徑中所有檔案和目錄的名稱。

使用此方法,您可以只打印檔案和目錄的名稱。

示例

以下 Java 程式列出了路徑 D:\ExampleDirectory 中所有檔案和目錄的名稱。

import java.io.File;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      //List of all files and directories
      String contents[] = directoryPath.list();
      System.out.println("List of files and directories in the specified directory:");
      for(int i=0; i<contents.length; i++) {
         System.out.println(contents[i]);
      }
   }
}

輸出

List of files and directories in the specified directory:
SampleDirectory1
SampleDirectory2
SampleFile1.txt
SampleFile2.txt
SapmleFile3.txt

ListFiles() 方法

此方法返回一個數組,該陣列儲存當前(File)物件所表示的路徑中所有檔案(和目錄)的物件(抽象路徑)。

由於此方法返回資料夾中每個檔案/目錄的物件,因此您可以使用它訪問檔案/目錄的屬性,例如大小、路徑等。

示例

以下 Java 程式列印路徑 D:\ExampleDirectory 中所有檔案的名稱、路徑和大小。

import java.io.File;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      //List of all files and directories
      File filesList[] = directoryPath.listFiles();
      System.out.println("List of files and directories in the specified directory:");
      for(File file : filesList) {
         System.out.println("File name: "+file.getName());
         System.out.println("File path: "+file.getAbsolutePath());
         System.out.println("Size :"+file.getTotalSpace());
         System.out.println(" ");
      }
   }
}

輸出

List of files and directories in the specified directory:
File name: SampleDirectory1
File path: D:\ExampleDirectory\SampleDirectory1
Size :262538260480

File name: SampleDirectory2
File path: D:\ExampleDirectory\SampleDirectory2
Size :262538260480

File name: SampleFile1.txt
File path: D:\ExampleDirectory\SampleFile1.txt
Size :262538260480

File name: SampleFile2.txt
File path: D:\ExampleDirectory\SampleFile2.txt
Size :262538260480

File name: SapmleFile3.txt
File path: D:\ExampleDirectory\SapmleFile3.txt
Size :262538260480

List(FilenameFilter filter) 方法

如其簽名所示,此方法接受一個 FilenameFilter 物件,並返回一個字串陣列,其中包含當前(File)物件所表示的路徑中所有檔案和目錄的名稱。但是,返回的陣列包含根據指定過濾器過濾的檔名。

使用此方法,您可以獲取特定資料夾中檔案和目錄的已過濾名稱。

示例

以下 Java 程式列印路徑 D:\ExampleDirectory 中文字檔案的名稱。

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      FilenameFilter textFilefilter = new FilenameFilter(){
         public boolean accept(File dir, String name) {
            String lowercaseName = name.toLowerCase();
            if (lowercaseName.endsWith(".txt")) {
               return true;
            } else {
               return false;
            }
         }
      };
      //List of all the text files
      String filesList[] = directoryPath.list(textFilefilter);
      System.out.println("List of the text files in the specified directory:");
      for(String fileName : filesList) {
         System.out.println(fileName);
      }
   }
}

輸出

指定目錄中的文字檔案列表 -

SampleFile1.txt
SampleFile2.txt
SapmleFile3.txt

ListFiles(FilenameFilter filter) 方法

此方法接受一個 FilenameFilter 物件,並返回一個 File 陣列,其中包含當前 File 物件所表示的路徑中所有檔案和目錄的物件。但是,返回的陣列包含根據其名稱過濾的檔案(物件)。

使用此方法,您可以根據檔名獲取特定資料夾中檔案和目錄的已過濾檔案物件。

示例

以下 Java 程式列印路徑 D:\ExampleDirectory 中所有文字檔案的名稱、路徑和大小。

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      FilenameFilter textFilefilter = new FilenameFilter(){
         public boolean accept(File dir, String name) {
            String lowercaseName = name.toLowerCase();
            if (lowercaseName.endsWith(".txt")) {
               return true;
            } else {
               return false;
            }
         }
      };
      //List of all the text files
      File filesList[] = directoryPath.listFiles(textFilefilter);
      System.out.println("List of the text files in the specified directory:");
      for(File file : filesList) {
         System.out.println("File name: "+file.getName());
         System.out.println("File path: "+file.getAbsolutePath());
         System.out.println("Size :"+file.getTotalSpace());
         System.out.println(" ");
      }
   }
}

輸出

List of the text files in the specified directory:
File name: SampleFile1.txt
File path: D:\ExampleDirectory\SampleFile1.txt
Size :262538260480

File name: SampleFile2.txt
File path: D:\ExampleDirectory\SampleFile2.txt
Size :262538260480

File name: SapmleFile3.txt
File path: D:\ExampleDirectory\SapmleFile3.txt
Size :262538260480

ListFiles(FileFilter filter) 方法

此方法接受一個 FileFilter 物件,並返回一個 File 陣列,其中包含當前 File 物件所表示的路徑中所有檔案和目錄的(File)物件。但是,返回的陣列包含根據檔案屬性過濾的檔案(物件)。

使用此方法,您可以根據大小、路徑、型別(檔案或目錄)等獲取特定資料夾中檔案和目錄的已過濾檔案物件。

示例

以下 Java 程式列印路徑 D:\ExampleDirectory 中所有檔案(而非資料夾)的名稱、路徑和大小。

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
public class ListOfFiles {
   public static void main(String args[]) throws IOException {
      //Creating a File object for directory
      File directoryPath = new File("D:\ExampleDirectory");
      FileFilter textFilefilter = new FileFilter(){
         public boolean accept(File file) {
            boolean isFile = file.isFile();
            if (isFile) {
               return true;
            } else {
               return false;
            }
         }
      };
      //List of all the text files
      File filesList[] = directoryPath.listFiles(textFilefilter);
      System.out.println("List of the text files in the specified directory:");
      for(File file : filesList) {
         System.out.println("File name: "+file.getName());
         System.out.println("File path: "+file.getAbsolutePath());
         System.out.println("Size :"+file.getTotalSpace());
         System.out.println(" ");
      }
   }
}

輸出

List of the text files in the specified directory:
File name: cassandra_logo.jpg
File path: D:\ExampleDirectory\cassandra_logo.jpg
Size :262538260480

File name: cat.jpg
File path: D:\ExampleDirectory\cat.jpg
Size :262538260480

File name: coffeescript_logo.jpg
File path: D:\ExampleDirectory\coffeescript_logo.jpg
Size :262538260480

File name: javafx_logo.jpg
File path: D:\ExampleDirectory\javafx_logo.jpg
Size :262538260480

File name: SampleFile1.txt
File path: D:\ExampleDirectory\SampleFile1.txt
Size :262538260480

File name: SampleFile2.txt
File path: D:\ExampleDirectory\SampleFile2.txt
Size :262538260480

File name: SapmleFile3.txt
File path: D:\ExampleDirectory\SapmleFile3.txt
Size :262538260480

更新於: 2023年9月12日

39K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告