遞歸的方法,在遞歸數量過大的時候,會致使堆棧溢出錯誤。用非遞歸方法,能夠實現。 java
package com.taoxg.test; 數組
import java.io.*;
import java.util.LinkedList;
public class LoopDir {
public static void main(String[] args) {
long count=0;
long countd=0;
//鏈表
LinkedList<File> list = new LinkedList<File>();
File dir = new File("D://");
File[] file = dir.listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
//把第一層的目錄,所有放入鏈表
list.add(file[i]);
else
count++;
System.out.println("文件"+count + ":" + file[i].getAbsolutePath());
}
File tmp=null;
//循環遍歷鏈表
while (!list.isEmpty()) {
//把鏈表的第一個記錄刪除
tmp = list.removeFirst();
//若是刪除的目錄是一個路徑的話
if (tmp.isDirectory()) {
//列出這個目錄下的文件到數組中
file = tmp.listFiles();
if (file == null)
continue;
//遍歷文件數組
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
//若是遍歷到的是目錄,則繼續加入鏈表
list.add(file[i]);
else
count++;
System.out.println("文件"+count + ":" + file[i].getAbsolutePath());
}
} else {
countd++;
System.out.println("目錄["+countd+"]路徑:" +tmp.getAbsolutePath());
}
}
}
} oop