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继承方式实例
Oct 29 Javascript
淘宝搜索框效果实现分析
Mar 05 Javascript
javascript是怎么继承的介绍
Jan 05 Javascript
jquery中 $.expr使用实例介绍
Jun 09 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
Sep 25 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
Bootstrap实现弹性搜索框
Jul 11 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
Aug 24 Javascript
vue的全局变量和全局拦截请求器的示例代码
Sep 13 Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
Vue中跨域及打包部署到nginx跨域设置方法
Aug 26 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
Jan 21 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
[FAQ]PHP中的一些常识:类篇
2006/10/09 PHP
一个程序下载的管理程序(三)
2006/10/09 PHP
php 中文处理函数集合
2008/08/27 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
JQuery动画animate的stop方法使用详解
2014/05/09 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
python字典排序实例详解
2015/05/20 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
英国蜡烛、蜡烛配件和家居香氛购买网站:Yankee Candle
2018/12/12 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
编辑个人求职信范文
2013/09/21 职场文书
幼儿园园长岗位职责
2013/11/26 职场文书
酒店人事专员岗位职责
2013/12/19 职场文书
两只小狮子教学反思
2014/02/05 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
退休教师追悼词
2015/06/23 职场文书
餐馆开业致辞
2015/08/01 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
关于Oracle12C默认用户名system密码不正确的解决方案
2021/10/16 Oracle
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL