标签:node 文件 resolve return err filePath js path
const fs = require('fs') const path = require('path') // readdir promise处理 function asyncReaddir(filePath) { return new Promise((resolve, reject) => { fs.readdir(filePath, (err, file) => { if (err) { reject(err); } resolve(file) }) }) } // statpromise处理 function asyncStat(filedir) { return new Promise((resolve, reject) => { fs.stat(filedir, (err, stats) => { if (err) reject(err); resolve(stats) }) }) } function fileDispaly(filePath, callback) { // 读取filePath路径下所有文件和文件夹名称 return asyncReaddir(filePath).then(files => { let promistList = files.map((fileName) => { let childFilePath = path.join(filePath, fileName) // 获得子文件的绝对路径 // map遍历会得到多个promise,映射成新的promise数组promistList, 之后用Promise.all处理多个promise return asyncStat(childFilePath).then(fileInfo => { // 获取每个文件或文件夹的信息 if (fileInfo.isFile()) { // 判断是否是文件 callback && callback(childFilePath) // 是文件则执行回调函数,这里演示接受文件绝对路径 } if (fileInfo.isDirectory()) { return fileDispaly(childFilePath, callback) // 递归处理文件夹 } }).catch(err => { console.log(err) }) }) return Promise.all(promistList) // 所有的promise处理完成 }).catch((err) => { console.log(err) }) } // 定义callback, 处理接受到每个文件 let fileList = [] function addFile(file) { fileList.push(file) } // 用D:/test 文件夹做测试 const filePath = path.resolve('D:\\test') fileDispaly(filePath, addFile).then(() => { // 这里可以对filePath下所有文件做处理了,如计算各个文件类型的数量 或统计文件信息等等 // console.log(fileList) // 将所有文件路径写入path.txt里 let dataStr = '' fileList.forEach(item => { dataStr += `${item} \n` }) fs.writeFile('path.txt', dataStr, (err) => { if (err) { console.log("写入文件失败") } else { console.log('写入成功') } }) })
标签:node,文件,resolve,return,err,filePath,js,path 来源: https://www.cnblogs.com/hll1109/p/15960031.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。