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 相关文章推荐
不错的asp中显示新闻的功能
Oct 13 Javascript
In Javascript Class, how to call the prototype method.(three method)
Jan 09 Javascript
23个超流行的jQuery相册插件整理分享
Apr 25 Javascript
jQuery弹性滑动导航菜单实现思路及代码
May 02 Javascript
关于img的href和src取变量及赋值的方法
Apr 28 Javascript
javascript实现textarea中tab键的缩排处理方法
Jun 26 Javascript
Bootstrap table两种分页示例
Dec 23 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
May 26 Javascript
Bootstrap Paginator+PageHelper实现分页效果
Dec 29 Javascript
javascript中join方法实例讲解
Feb 21 Javascript
Vue 进阶之路(三)
Apr 18 Javascript
vue+element模态框中新增模态框和删除功能
Jun 11 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
php mysql数据库操作分页类
2008/06/04 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
jquery 经典动画菜单效果代码
2010/01/26 Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
JS实现同一个网页布局滑动门和TAB选项卡实例
2015/09/23 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
纯js实现图片匀速淡入淡出效果
2017/08/22 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
typescript nodejs 依赖注入实现方法代码详解
2019/07/21 NodeJs
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Python 正则表达式(转义问题)
2014/12/15 Python
基于Python实现一个简单的银行转账操作
2016/03/06 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
2018/06/26 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
奢华的意大利皮革手袋:Bene Handbags
2019/10/29 全球购物
澳洲CFL商城:CHEMIST FOR LESS(中文)
2021/02/28 全球购物
国庆宣传标语
2014/06/30 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
投标承诺函范文
2015/01/21 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
2019各种承诺书范文
2019/06/24 职场文书
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
讲解Python实例练习逆序输出字符串
2022/05/06 Python