Java 獲取指定目錄下指定字尾名的檔名稱
阿新 • • 發佈:2018-12-19
前面我們學習了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
版權宣告:本文為博主原創文章,轉載請附上博文連結!