如何在Java中根據副檔名過濾檔案並顯示檔名?
名為File的java.io包中的類表示系統中的檔案或目錄(路徑名)。此類提供了各種方法來對檔案/目錄執行各種操作。
要獲取目錄中所有現有檔案的列表,此類提供了五種不同的方法來獲取特定資料夾中所有檔案的詳細資訊:
- String[] list()
- File[] listFiles()
- String[] list(FilenameFilter filter)
- File[] listFiles(FilenameFilter filter)
- File[] listFiles(FileFilter filter)
其中,**String[] list(FilenameFilter filter)**方法返回一個字串陣列,其中包含當前(File)物件所表示的路徑中所有檔案和目錄的名稱。但是,返回的陣列包含根據指定過濾器過濾的檔名。
**FilenameFilter**是Java中的一個介面,帶有一個方法。
accept(File dir, String name)
要根據副檔名獲取檔名,請按如下方式實現此介面並將它的物件傳遞給檔案類的上面指定的list()方法。
示例
假設我們在D目錄中有一個名為ExampleDirectory的資料夾,其中包含7個檔案和2個目錄,如下所示:
以下Java程式分別列印路徑D:\ExampleDirectory中文字檔案和jpeg檔案的名稱。
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; } } }; FilenameFilter jpgFilefilter = new FilenameFilter(){ public boolean accept(File dir, String name) { String lowercaseName = name.toLowerCase(); if (lowercaseName.endsWith(".jpg")) { return true; } else { return false; } } }; //List of all the text files String textFilesList[] = directoryPath.list(textFilefilter); System.out.println("List of the text files in the specified directory:"); for(String fileName : textFilesList) { System.out.println(fileName); } String imageFilesList[] = directoryPath.list(jpgFilefilter); System.out.println("List of the jpeg files in the specified directory:"); for(String fileName : imageFilesList) { System.out.println(fileName); } } }
輸出
List of the text files in the specified directory: SampleFile1.txt SampleFile2.txt SapmleFile3.txt List of the jpeg files in the specified directory: cassandra_logo.jpg cat.jpg coffeescript_logo.jpg javafx_logo.jpg
廣告