1,引用node的fs和path模塊javascript
var fs = require("fs"); var path = require("path");
2,思路:java
a,利用readdir讀取全部子目錄名node
b,讀取完成進行回調,先檢查第一項,利用path.join()獲得當前的目錄/文件名ui
c,利用fs.stat()檢測當前項是目錄仍是文件夾,是文件夾,以當前目錄執行遞歸;是文件,檢查第二項code
d,當一個目錄中的全部項都被遍歷後,返回上級目錄,開始遍歷上級目錄的下一項。遞歸
e,遍歷完成:輸出遍歷完成。ip
function travel(dir,callback,finish){ fs.readdir(dir,function(err,file){ (function next(i){ if(i<file.length){ var pathname = path.join(dir,file[i]); fs.stat(pathname,function(err,stats){ if(stats.isDirectory()){ travel(pathname,callback,function(){ next(i+1); }) } else{ callback(pathname,function(){ next(i+1); }) } }) } else{ finish(); } })(0) }) } travel("../",function(pathname,func){ console.log(pathname); func(); },function(){ console.log("遍歷完成"); });