Java遍歷資料夾的兩種方法(非遞迴和遞迴)
import java.io.File;
import java.util.LinkedList;
public class FileSystem {
public static int num;
public static void main(String[] args) {
long a = System.currentTimeMillis();
//String path="c:";
num=0;
String[] lists={"c:","d:"};
/*
for(int i=0;i<lists.length;i++){
File file=new File(lists[i]);
scanDirRecursion(file);
*/
for(int i=0;i<lists.length;i++){
scanDirNoRecursion(lists[i]);
}
System.out.print("檔案總數:"+num);
System.out.print("總耗時:");
System.out.println(System.currentTimeMillis() - a);
}
//非遞迴
public static void scanDirNoRecursion(String path){
LinkedList list = new LinkedList();
File dir = new File(path);
File file[] = dir.listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);
else{
System.out.println(file[i].getAbsolutePath());
num++;
}
}
File tmp;
while (!list.isEmpty()) {
tmp = (File)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{
System.out.println(file[i]);
num++;
}
}
} else {
System.out.println(tmp);
num++;
}
}
}
//遞迴
public static void scanDirRecursion(File file) {
try {
if (file.canRead()) {
if (file.isDirectory()) {
String[] files = file.list();
if (files != null) {
for (int i = 0; i < files.length; i++) {
scanDirRecursion(new File(file, files[i]));
}
}
} else {
//if (file.getName().endsWith("ppt"))
System.out.println(file);
num++;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
測試:
(1)遞迴: 檔案總數:189497 總耗時:39328
(2)非遞迴:檔案總數:189432 總耗時:37469
非遞迴相對要好
相關文章
- Java 資料夾遞迴遍歷Java遞迴
- PHP遞迴遍歷資料夾PHP遞迴
- 二叉樹的四種遍歷(遞迴與非遞迴)二叉樹遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 【資料結構】二叉樹遍歷(遞迴+非遞迴)資料結構二叉樹遞迴
- 【Java資料結構與演算法筆記(二)】樹的四種遍歷方式(遞迴&非遞迴)Java資料結構演算法筆記遞迴
- Android遍歷所有控制元件的遞迴和非遞迴實現Android控制元件遞迴
- [java] 二叉樹的後序遍歷(遞迴與非遞迴實現)Java二叉樹遞迴
- 二叉樹的前中後序遍歷(遞迴和非遞迴版本)二叉樹遞迴
- 非遞迴實現先序遍歷和中序遍歷遞迴
- 二叉樹非遞迴遍歷二叉樹遞迴
- python實現二叉樹及其七種遍歷方式(遞迴+非遞迴)Python二叉樹遞迴
- 遍歷二叉樹的遞迴與非遞迴程式碼實現二叉樹遞迴
- 資料結構-樹以及深度、廣度優先遍歷(遞迴和非遞迴,python實現)資料結構遞迴Python
- Java遞迴遍歷資料夾及檔案過濾器使用(FileFilter)Java遞迴過濾器Filter
- 二叉樹的非遞迴遍歷——java實現二叉樹遞迴Java
- 二叉樹——後序遍歷的遞迴與非遞迴演算法二叉樹遞迴演算法
- 二叉樹建立及遍歷演算法(遞迴及非遞迴)二叉樹演算法遞迴
- 什麼是遍歷二叉樹,JavaScript實現二叉樹的遍歷(遞迴,非遞迴)二叉樹JavaScript遞迴
- 遍歷二叉樹的迭代和遞迴方法二叉樹遞迴
- 非遞迴先序遍歷二叉樹遞迴二叉樹
- 【刷題】二叉樹非遞迴遍歷二叉樹遞迴
- 二叉樹的非遞迴遍歷寫法二叉樹遞迴
- 快速排序【遞迴】【非遞迴】排序遞迴
- js遞迴遍歷講解JS遞迴
- 原:八皇后問題的遞迴和非遞迴Java實現遞迴Java
- 二叉樹的所有遍歷非遞迴實現二叉樹遞迴
- 遞迴遍歷網站所有 url遞迴網站
- python 遞迴遍歷目錄Python遞迴
- 樹3-二叉樹非遞迴遍歷(棧)二叉樹遞迴
- 兩種遞迴方式實現迴文字遞迴
- Vue3.0的遞迴監聽和非遞迴監聽Vue遞迴
- 遞迴和尾遞迴遞迴
- 遞迴遍歷物件獲取value值遞迴物件
- java基礎:遞迴應用---遍歷檔案目錄Java遞迴
- Java - 13 方法的遞迴Java遞迴
- Java方法06:遞迴Java遞迴
- 遞迴和非遞迴分別實現求n的階乘遞迴