遍历文件 发表于 2017-12-28 | 阅读次数: 使用 fs 模块遍历文件,有递归、非递归两种方式 递归:12345678910111213141516function travel(dir, callback) { fs.readdirSync(dir).forEach(function (file) { var pathname = path.join(dir, file); if (fs.statSync(pathname).isDirectory()) { travel(pathname, callback); } else { callback(pathname); } });}// 调用travel('c:\\workspace\\nodejs\\public', (pathname) => { console.log(pathname);}); 非递归:1234567891011121314151617181920212223242526272829function travel(dir, callback, finish) { fs.readdir(dir, function (err, files) { (function next(i) { if (i < files.length) { var pathname = path.join(dir, files[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 && finish(); } }(0)); });}// 调用travel('c:\\workspace\\nodejs\\public', (pathname, next) => { console.log(pathname); next();});