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显示选择目录对话框的代码
Nov 10 Javascript
最简单的jQuery程序 入门者学习
Jul 09 Javascript
js setattribute批量设置css样式
Nov 26 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
javascript实现数组去重的多种方法
Mar 14 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
Apr 06 Javascript
jQuery插件扩展实例【添加回调函数】
Nov 26 Javascript
javascript基础练习之翻转字符串与回文
Feb 20 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
Mar 29 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
May 24 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
Aug 03 Javascript
js轮播图之旋转木马效果
Oct 13 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
队列在编程中的实际应用(php)
2010/09/04 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
php分页查询mysql结果的base64处理方法示例
2017/05/18 PHP
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
浅谈javascript的调试
2015/01/28 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
[00:57]深扒TI7聊天轮盘语音出处5
2017/05/11 DOTA
python实现斐波那契数列的方法示例
2017/01/12 Python
python读取文件名称生成list的方法
2018/04/27 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
Python类装饰器实现方法详解
2018/12/21 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
运输服务质量承诺书
2014/03/27 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
企业2014年度工作总结
2014/12/10 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
经费申请报告
2015/05/15 职场文书
2016春季运动会前导词
2015/11/25 职场文书