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 相关文章推荐
一个基于jQuery的树型插件(OrangeTree)使用介绍
May 03 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
Nov 26 Javascript
js菜单点击显示或隐藏效果的简单实例
Jan 13 Javascript
HTML页面弹出居中可拖拽的自定义窗口层
May 07 Javascript
javascript瀑布流式图片懒加载实例
Jun 28 Javascript
node.js缺少mysql模块运行报错的解决方法
Nov 13 Javascript
js原生Ajax的封装和原理详解
Mar 11 Javascript
使用javaScript实现鼠标拖拽事件
Apr 03 Javascript
深入理解Vue nextTick 机制
Apr 28 Javascript
JS获取并处理php数组的方法实例分析
Sep 04 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
Sep 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
ob_start(),ob_start('ob_gzhandler')使用
2006/12/25 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
jquery 插件学习(一)
2012/08/06 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
基于JS实现父组件的请求服务过程解析
2019/10/14 Javascript
Windows下搭建python开发环境详细步骤
2020/07/20 Python
mac系统安装Python3初体验
2018/01/02 Python
python3实现基于用户的协同过滤
2018/05/31 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
python Matplotlib模块的使用
2020/09/16 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
Kipling澳洲官网:购买凯浦林包包
2020/12/17 全球购物
销售文员的岗位职责
2013/11/20 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
小学生运动会广播
2015/08/19 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技