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();
}
}
}
}
}