JAVA-基礎(查找文件夾內文件)


JAVA-基礎(查找文件夾內文件)

1.目的?

查找指定文件夾內的文件。以查詢.txt結尾的文件為例。

2.分析?

目錄搜索,無法判斷多少級目錄,所以使用遞歸,遍歷所有目錄。

遍歷目錄時,獲取的子文件,通過文件名稱,判斷是否符合條件。

3.代碼實現?

 1 public class DiGuiDemo4 {
 2     public static void main(String[] args) {
 3         File dir = new File("D:\\aaa");
 4         printDir2(dir);
 5     }
 6   
 7     public static void printDir2(File dir) {
 8           // 匿名內部類方式,創建過濾器子類對象
 9         File[] files = dir.listFiles(new FileFilter() {
10             @Override
11             public boolean accept(File pathname) {
12                 return pathname.getName().endsWith(".txt")||pathname.isDirectory();
13             }
14         });
15           // 循環打印
16         for (File file : files) {
17             if (file.isFile()) {
18                 System.out.println("文件名:" + file.getAbsolutePath());
19             } else {
20                 printDir2(file);
21             }
22         }
23     }
24 }   

4.解釋?

File dir = new File("D:\\aaa");創建一個文件對象。
listFiles方法作用是遍歷File dir文件夾內的文件和文件夾。所以返回的值為數組。
FileFilter是一個接口,是File的過濾器。 該接口的對象可以傳遞給File類的listFiles(FileFilter) 作為參數, 接口中只有一個方法。
boolean accept(File pathname) :測試pathname是否應該包含在當前File目錄中,符合則返回true。
接口作為參數,需要傳遞子類對象,重寫其中方法。我們選擇匿名內部類方式,比較簡單。
accept方法,參數為File,表示當前File下所有的子文件和子目錄。保留住則返回true,過濾掉則返回false。保留規則:要么是.txt文件。要么是目錄,用於繼續遍歷。
通過過濾器的作用,listFiles(FileFilter)返回的數組元素中,子文件對象都是符合條件的,可以直接打印。
pathname.getName().endsWith(".txt")||pathname.isDirectory()。判斷名字后綴是否是.txt的或者是不是文件夾。




 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM