node.js 簡單的異步文件遍歷函數

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("遍歷完成");
});
相關文章
相關標籤/搜索