1. 程式人生 > >Java 獲取指定目錄下指定字尾名的檔名稱

Java 獲取指定目錄下指定字尾名的檔名稱

前面我們學習了File獲取指定路徑下的所有檔案或者資料夾的名稱,還有獲取指定路徑下所有的檔案物件。這篇,我們分別利用這兩個方法來做一個練習題,例如輸出桌面檔案中所有的png檔名稱。最後簡單看看檔案過濾器的使用,也通過解決這個問題。

1. 檔名稱方法

如果你桌面沒有png檔案,你可以換成jpg,或者docx,或者pdf,MP4等。

package file;

import java.io.File;

public class Demo2_File {

    public static void main(String[] args) {
        
        File desktop = new File("C:\\Users\\Administrator\\Desktop");
        
        String[] arr = desktop.list();
        
        for (String string : arr) {
            if(string.endsWith(".png")) {
                System.out.println(string);
            }
        }

    }

}


執行會打印出我桌面兩個png檔案的名稱。下面看看獲取檔案物件來解決這個問題。

2.獲取檔案物件

      一般來說,實際開發中是採用獲取檔案物件這個方案,因為檔案物件可能是資料夾或者檔案,資料夾下可能還有巢狀資料夾等,只不過,目前我們沒有學習遞迴的思想,暫時做不了一個路徑下所有的png檔案輸出。

package file;
 
import java.io.File;
 
public class Demo2_File {
 
    public static void main(String[] args) {
        
        File desktop = new File("C:\\Users\\Administrator\\Desktop");
        
        File[] subFiles = desktop.listFiles();
        
        for (File file : subFiles) {
            
            if(file.isFile() && file.getName().endsWith(".png")) {
                System.out.println(file);
            }
        }
 
    }
 
}


      執行輸出檔案的絕對路徑。第二種方法是平時開發中使用的,雖然上面if判斷還使用了兩個條件,看起來比第一個要囉嗦,但是這種方式可以處理資料夾巢狀的情況。


3.檔案過濾器

      在file物件方法中,有一個list(FilenameFilter)的方法,FilenameFilter是一個介面,裡面有一個accept方法。作用就是過濾,符合檔名稱過濾規則的就儲存到list陣列。

package file;
 
import java.io.File;
import java.io.FilenameFilter;
 
public class Demo2_File {
 
    public static void main(String[] args) {
        
        File desktop = new File("C:\\Users\\Administrator\\Desktop");
        
        String[] arr = desktop.list(new FilenameFilter() {
            
            @Override
            public boolean accept(File dir, String name) {
                //把dir 和name都封裝到一個檔案物件裡
                File file = new File(dir, name);
                return file.isFile() && file.getName().endsWith(".png");
            }
        });
        
        //遍歷符合過濾器的陣列
        for (String string : arr) {
            System.out.println(string);
        }
 
    }
 
}


      上面是寫了一個匿名類,然後重寫了accept方法,運行同樣可以得到桌面所以png檔名稱。


--------------------- 
作者:Anthony_tester 
來源:CSDN 
原文:https://blog.csdn.net/u011541946/article/details/80960973 
版權宣告:本文為博主原創文章,轉載請附上博文連結!