转载自bdss58的博文,原文地址:https://blog.csdn.net/bdss58/article/details/51377577
var fs = require('fs'); var path = require('path'); function readdirPromisify(dir) { return new Promise((resolve, reject) => { fs.readdir(dir, (err, list) => { if (err) { reject(err); } resolve(list); }); }); } function statPromisify(dir) { return new Promise((resolve, reject) => { fs.stat(dir, (err, stats) => { if (err) { reject(err); } resolve(stats); }); }); } function listDir(dir) { return statPromisify(dir).then(stats => { if (stats.isDirectory()) { return readdirPromisify(dir).then(list => Promise.all(list.map(item => listDir(path.resolve(dir, item)) )) ).then(subtree => [].concat(...subtree)); } else { return [dir]; } }); }