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 面向对象,实现namespace,class,继承,重载
Oct 29 Javascript
js三种排序算法分享
Aug 16 Javascript
JS 去除Array中的null值示例代码
Nov 20 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
Aug 27 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
Sep 19 Javascript
Angular ui.bootstrap.pagination分页
Jan 20 Javascript
浅谈JavaScript 代码简洁之道
Jan 09 Javascript
手挽手带你学React之React-router4.x的使用
Feb 14 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
Jul 30 Javascript
解决iView Table组件宽度只变大不变小的问题
Nov 13 Javascript
js属性对象的hasOwnProperty方法的使用
Feb 05 Javascript
vite+vue3.0+ts+element-plus快速搭建项目的实现
Jun 24 Vue.js
如何使用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批量修改表结构实例
2017/05/24 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
微信小程序 for 循环详解
2016/10/09 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
vue组件实例解析
2017/01/10 Javascript
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
vue使用el-upload上传文件及Feign服务间传递文件的方法
2019/03/15 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
django开发之settings.py中变量的全局引用详解
2017/03/29 Python
Python数据可视化正态分布简单分析及实现代码
2017/12/04 Python
python监控键盘输入实例代码
2018/02/09 Python
Python中pillow知识点学习
2018/04/30 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
python 实现矩阵按对角线打印
2019/11/29 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
python实现交并比IOU教程
2020/04/16 Python
基于python代码批量处理图片resize
2020/06/04 Python
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
2016新年年会主持词
2015/07/06 职场文书
导游词之崇武古城
2019/10/07 职场文书
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技