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


Posted in Javascript onApril 07, 2017

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
javascript 简单抽屉效果的实现代码
Mar 09 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
Sep 19 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
Nov 07 Javascript
JavaScript中document对象使用详解
Jan 06 Javascript
JavaScript中的pow()方法使用详解
Jun 15 Javascript
js判断主流浏览器类型和版本号的简单实现代码
May 26 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
轻量级JS Cookie插件js-cookie的使用方法
Mar 22 Javascript
Vue开发之watch监听数组、对象、变量操作分析
Apr 25 Javascript
这15个Vue指令,让你的项目开发爽到爆
Oct 11 Javascript
JS动态显示倒计时效果
Dec 12 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 01 Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 #Javascript
JS实现css hover操作的方法示例
Apr 07 #Javascript
微信小程序 chooseImage选择图片或者拍照
Apr 07 #Javascript
微信小程序page的生命周期和音频播放及监听实例详解
Apr 07 #Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
Apr 07 #jQuery
jQuery中map函数的两种方式
Apr 07 #jQuery
微信小程序 连续旋转动画(this.animation.rotate)详解
Apr 07 #Javascript
You might like
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
Mozilla 表达式 __noSuchMethod__
2009/04/05 Javascript
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
js 有框架页面跳转(target)三种情况下的应用
2013/04/09 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
js使用心得分享
2015/01/13 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
nuxt 实现在其它js文件中使用store的方式
2020/11/05 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
[01:46]新英雄登场
2019/09/10 DOTA
python thread 并发且顺序运行示例
2009/04/09 Python
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
TensorFlow实现模型评估
2018/09/07 Python
python线性插值解析
2020/07/05 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
人事助理自荐信
2014/02/02 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
单位工作证明格式模板
2014/10/04 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
详解Python类和对象内容
2021/06/22 Python
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
python 离散点图画法的实现
2022/04/01 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python