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 相关文章推荐
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
Jun 26 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
Feb 05 Javascript
Js注册协议倒计时的小例子
Jun 24 Javascript
仿淘宝TAB切换搜索框搜索切换的相关内容
Sep 21 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
vue自动化表单实例分析
May 06 Javascript
前后端如何实现登录token拦截校验详解
Sep 03 Javascript
微信小程序自定义导航栏
Dec 31 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
Apr 16 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
Apr 17 Javascript
node.js文件操作系统实例详解
Nov 05 Javascript
es6中new.target的作用和使用场景简单示例分析
Mar 14 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
PHP调用Webservice实例代码
2011/07/29 PHP
PHP源码之explode使用说明
2011/08/05 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
php微信开发接入
2016/08/27 PHP
javascript 45种缓动效果 非常酷
2011/06/28 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
基于jquery实现省市联动效果
2015/11/23 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
python音频处理用到的操作的示例代码
2017/10/27 Python
Django视图和URL配置详解
2018/01/31 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
Python中的pack和unpack的使用
2018/03/12 Python
Python 2.7中文显示与处理方法
2018/07/16 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
浅析Python requests 模块
2020/10/09 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
《在家里》教后反思
2014/03/01 职场文书
职称评定自我鉴定
2014/03/18 职场文书
大学专科求职信
2014/07/02 职场文书
教师暑期培训感言
2014/08/15 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书
2016大学生求职自荐信范文
2016/01/28 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫