JAVA 遍歷文件夾下的所有文件


JAVA遍歷文件下的所有文件和文件夾

@Test
    public void traverseFolder1( ) {
        String path = "D:\\TEST";
        int fileNum = 0;
        int folderNum = 0;
        int foldeNum = 0;
        File file = new File(path);
        if (file.exists()) {
            LinkedList<File> list = new LinkedList<File>();

            //list()方法是返回某個目錄下的所有文件和目錄的文件名,返回的是String數組

            //listFiles()方法是返回某個目錄下所有文件和目錄的絕對路徑,返回的是File數組
            File[] files = file.listFiles();
            for (File file2 : files) {
                if (file2.isDirectory()) {
                    System.out.println("文件夾:" + file2.getAbsolutePath());
                    list.add(file2);
                    foldeNum++;
                } else {
                    System.out.println("文件:" + file2.getAbsolutePath());
                    fileNum++;
                }
            }
            File temp_file;
            while (!list.isEmpty()) {
                temp_file = list.removeFirst();//刪除第一個元素,也就是找到數組中的第一個元素返回一個File去判斷,說白了就是循環分別找到每個文件下面對應的是文件還是文件夾,如果循環下一級還是文件夾則繼續循環直到結束(思想就是一層一層去判斷查找知道找到所有的文件和文件夾,不明白看下面的例子。)
                files = temp_file.listFiles();
                for (File file2 : files) {
                    if (file2.isDirectory()) {//如果是個目錄(文件夾)則返回true
                        System.err.println("文件夾:" + file2.getAbsolutePath());
                        list.add(file2);
                        folderNum++;
                    } else {//輸出文件
                        System.out.println("文件:" + file2.getAbsolutePath());//返回文件的完整路徑。
                        fileNum++;
                    }
                }
            }
        } else {
            System.out.println("文件不存在!");
        }
        System.out.println("文件夾共有:" + folderNum + ",文件共有:" + fileNum);
    }

 例子:

LinkedList list=new LinkedList();
list.add("a");
list.add(1);
list.add('b');
String kk=(String) list.removeFirst(); // (String) 這代表強制轉換 原理同上
char   k=(char) list.removeLast();//刪除最后一個元素
System.out.println(kk);
System.out.println(k);
}
}
結果為 a     b

//使用遞歸

 

public void traverseFolder2(String path) { File file = new File(path); if (file.exists()) { File[] files = file.listFiles(); if (null == files || files.length == 0) { System.out.println("文件夾是空的!"); return; } else { for (File file2 : files) { if (file2.isDirectory()) { System.out.println("文件夾:" + file2.getAbsolutePath()); traverseFolder2(file2.getAbsolutePath()); } else { System.out.println("文件:" + file2.getAbsolutePath()); } } } } else { System.out.println("文件不存在!"); } }

 

復制代碼

 


免責聲明!

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



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