如何在 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