var fs =require('fs'); //定义fs
var paths = "."; //定义path,指路径,其中'.'是当前目录下,然后子目录例如./xx
var total= 0; //定义常量total,赋值为0.
var getS = function(file){ //定义get函数,用来判断获取到的对象文件类型和目录类型
total ++; //如果进入这函数,total自增
fs.stat(file,function(err,stats){ //fs.stat(文件路径,回调函数(err.fs.Stats对象));/fs.fstat(文件句柄fd,回调函数(err.fs.Stats对象));/fs.lstat(链接路径,回调函数(err.fs.Stats对象));
total --; //自减
if(stats.isFile()){ //如果判断是否为文件
console.info(file); //打印文件
if (total===0) { console.log("执行完毕")} //如果常量total绝对等于0 提示打印执行完毕
}else{ //如果不是文件进入语句,函数
zz(file) //遍历函数方法
}
});
};
function zz(paths){
total ++; //自增
fs.readdir(paths,function(err,files){ //fs.readdir(路径,回调函数(err,fileNameArray));
total --; //自减
if(err) throw err; //抛出异常
for(var i = 0; i< files.length;i++){ //进入循环语句,总长度为目录下的文件数
getS(paths + '/' + files[i]); //进入方法 并打印
}
if(total===0){console.log("执行完毕") } //循环结束后 提示打印 "执行完毕"
});
}
zz(paths); //以path为参数 调用zz函数
//xtotal:
然后测试node bianli_yibu.js.效果
成功!