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

更新時間: 2019年8月2日

3K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告