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弹出层代码
Sep 24 Javascript
只需一行代码,轻松实现一个在线编辑器
Nov 12 Javascript
JS控制日期显示的小例子
Nov 23 Javascript
jquery的clone方法应用于textarea和select的bug修复
Jun 26 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
Jun 23 Javascript
jquery实现两边飘浮可关闭的对联广告
Nov 27 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
Dec 21 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
基于滚动条位置判断的简单实例
Dec 14 Javascript
layui radio性别单选框赋值方法
Aug 15 Javascript
微信小程序实现带缩略图轮播效果
Nov 04 Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 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实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
2014/07/29 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
node.js express中app.param的用法详解
2017/07/16 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
Cython 三分钟入门教程
2009/09/17 Python
Python获取apk文件URL地址实例
2013/11/01 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
Python 和 JS 有哪些相同之处
2017/11/23 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
python redis 删除key脚本的实例
2019/02/19 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
英文求职信范文
2014/05/23 职场文书
见习报告格式范文
2014/11/08 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
Mysql服务添加 iptables防火墙策略的方案
2021/04/29 MySQL
教你利用Nginx 服务搭建子域环境提升二维地图加载性能的步骤
2021/09/25 Servers
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技