遞歸<二> --- 遍歷指定目錄下所有文件

1、遞歸定義
參考:http://blog.csdn.net/kyle0349/article/details/51836198
2、對於遞歸遍歷文件夾目錄下的文件思路:

 A、如果該文件目錄下全是文件(非文件夾),那很理想,直接打印絕對路徑(file.getAbsolutePath())就完成任務

 B、重點在於如果該文件目錄下有的是文件,有的是文件夾(子文件夾),然後子文件夾也存在相同問題,
     判斷是文件還是文件夾,或者可以認爲:如果是文件就不是文件夾,或者:如果是文件夾,就不是文件
         file.isFile()   /   file.isDirectory()

 C、判斷完後,如果是文件,那麼打印絕對路徑(file.getAbsolutePath())就完成任務
          如果不是文件(也就是文件夾)呢,就重新調用自身showAllFiles(File folder),因爲這個方法就是用來對付文件夾的,

(腦補:只要遇到文件夾就雙擊進該文件夾,進行判斷,是文件,輸出,不是雙擊進去…重複…重複)

package cn.test;

import java.io.File;

/**
 * 遞歸遍歷文件夾下所有文件
 * @author admin
 *
 */
public class Recursion2 {

    static int count = 0 ;

    public static void main(String[] args) {
        //確定目標路徑
        File folder = new File("d:/");
        if(!folder.exists() || !folder.isDirectory()){
            System.out.println("文件夾路徑錯誤,文件夾不存在 ,或者該路徑不是一個合法的文件夾");
        }else{
            showAllFiles(folder);
        }

    }

    private static void showAllFiles(File folder) {
        File[] files = folder.listFiles();
        for(File file:files){
            if(file.isFile()){
                count ++; //記錄文件個數
                System.out.println(file.getAbsolutePath());//輸出文件的絕對路徑:包含文件名
                System.out.println("文件數:"+count);
            }else{
                try {
                    showAllFiles(file);//如果是文件夾,則調用自身showAllFiles(File folder)來把該文件夾目錄下文件顯示出來
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章