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 相关文章推荐
js类中获取外部函数名的方法与代码
Sep 12 Javascript
JQuery困惑—包装集 DOM节点
Oct 16 Javascript
JQuery之拖拽插件实现代码
Apr 14 Javascript
html a标签-超链接中confirm方法使用介绍
Jan 04 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
Oct 11 Javascript
一个JavaScript的求爱小特效
May 09 Javascript
Javascript闭包用法实例分析
Jan 23 Javascript
如何使用jquery easyui创建标签组件
Nov 18 Javascript
AngularJS实现动态添加Option的方法
May 17 Javascript
javascript中的replace函数(带注释demo)
Jan 07 Javascript
详解微信小程序input标签正则初体验
Aug 18 Javascript
layer.open组件获取弹出层页面变量、函数的实例
Sep 25 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实现ajax仿官网搜索功能实例
2014/12/02 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
javascript 必知必会之closure
2009/09/21 Javascript
基于jQuery的日期选择控件
2009/10/27 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
JS实现的3D拖拽翻页效果代码
2015/10/31 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
2016/09/04 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
JSONP基础知识详解
2017/03/19 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
Angularjs2不同组件间的通信实例代码
2017/05/06 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
vue 实现通过vuex 存储值 在不同界面使用
2019/11/11 Javascript
用云开发Cloudbase实现小程序多图片内容安全监测的代码详解
2020/06/07 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
python中map的基本用法示例
2018/09/10 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
Python数据可视化图实现过程详解
2020/06/12 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
实习自我评价怎么写
2013/12/02 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
财务负责人岗位职责
2015/02/03 职场文书
2015年电工工作总结
2015/04/10 职场文书
贷款工资证明范本
2015/06/12 职场文书
Go语言中break label与goto label的区别
2021/04/28 Golang
Python first-order-model实现让照片动起来
2022/06/25 Python