文件操作 异步读取目录的demo - nqdeng/7-days-nodejs GitHub Wiki
/**
* 异步遍历文件夹
*/
const fs = require("fs")
const path = require("path")
function travel(dir, callback, finish) {
// 异步读取目录
fs.readdir(dir, "utf8", function(err, files) {
(function next(i) {
if( i < files.length) { // 说明当前目录有文件
var pathname = path.join(dir, files[i])
// fs.stat是读取文件的属性
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 && finish();
}
})(0)
})
}
travel("./dir", function(pathname, fn) {
console.log("文件名-->", pathname)
fn();
})
/**
* 执行的结果
文件名--> dir\a\a-1\a-1-1.txt
文件名--> dir\b\b-1.txt
文件名--> dir\b\b-2.txt
文件名--> dir\c文件.txt
*
*/
作者这里的调用这里没写,然后初看有点懵逼,后来想一下,是自己在调用的时候,callbak其实第二个参数又是一个回调