JavaScript

超轻量级php框架startmvc

ES6实现的遍历目录函数示例

更新时间:2020-05-04 22:12:01 作者:startmvc
本文实例讲述了ES6实现的遍历目录函数。分享给大家供大家参考,具体如下://npminit//npminst

本文实例讲述了ES6实现的遍历目录函数。分享给大家供大家参考,具体如下:


// npm init
// npm install koa --save-dev
// node --harmony app.js
const fs = require('fs');
var eachDir = (() => {
 let queue = [];
 var eachFiles = (options) => {
 if (queue.length) {
 let path = queue.shift();
 fs.readdir(path, (err, files) => {
 if (err) {
 options.fail(err);
 return;
 }
 files.forEach((file, i) => {
 let url = path + '/' + file;
 let stats = fs.statSync(url);
 if (stats.isDirectory()) {
 queue.push(url);
 } else {
 options.callback && options.callback.call(stats, {
 name: file,
 size: stats.size,
 path: url
 });
 }
 });
 eachFiles(options);
 });
 } else {
 options.done();
 }
 };
 return (path, options) => {
 let stats = fs.statSync(path);
 if (stats.isDirectory()) {
 queue.push(path);
 }
 eachFiles(options);
 };
})();
let total = 0, fileTypes = {};
eachDir('./', {
 callback(file) {
 let ret = file.name.match(/\.(\w+$)/);
 if (ret) {
 if (!fileTypes[ret[0]]) {
 fileTypes[ret[0]] = 0;
 }
 fileTypes[ret[0]] += 1;
 }
 // console.log(file);
 total++;
 },
 done() {
 console.log(total, fileTypes);
 fs.writeFile('./result.txt', JSON.stringify(fileTypes), (err) => {
 if (err) throw err;
 console.log('done');
 });
 },
 fail(err) {
 console.log(err);
 }
});

希望本文所述对大家ECMAScript程序设计有所帮助。

ES6 遍历 目录 函数