写一个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);
    }
});
时间: 2024-12-15 06:54:40

写一个ES6 的遍历目录函数的相关文章

通过正则写一个较为完美的getByClass函数

getByclass传入两个参数,oParent是父集,sClass是要传入class名称 1 function getByClass(oParent,sClass){ 2 var aChild = oParent.getElementsByTagName("*"), 3 result = []; 4 for(var i =0;i<aChild.length;i++){ 5 if(aChild[i].className.match(new RegExp("(\\s|^)

写一个php memcache 简单的函数

在一个项目中添加了memcache层,但由于数据库本来压力就不大,数据量很小,所以性能改善不是特别明显,因此学习并应用下来记录一下方便以后自己使用.这里我只应用了直接调用对应api函数的方法,另外一种方法是创建对象来连接memcache,具体是$mem=new Memcache,然后再调用对象里的方法来操作要存储的item. 本次使用环境为php 5.4.17, yum安装的驱动: php-pecl-memcache-3.0.8-1.el5.remi 代码如下: $MEMCACHE["host&

递归的使用:遍历目录函数

2016.12.21,星期三   利用递归输出显示C盘中所有的文件及文件夹: <?php //遍历目录 function wenJian($path,$v = 0) {// $path = "."; //打开目录 $a = opendir($path) ; //读取目录,readdir(资源名(通道)) // $b = readdir($a); //$b=readdir($a)外面的括号必须加上,"="赋值运算符运算等级小于"!=="比较运

用Python写一个批量生成账号的函数(用户控制数据长度、数据条数)

# 1.写一个函数,批量生成一些注册使用的账号:产生的账号是以@163.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母.小写字母.数字组成 import random,stringdef Users(num,len): result = [] a = string.ascii_lowercase b = string.ascii_uppercase c = string.digits d = string.ascii_letters count = 0

写一个限制执行次数的函数

前言:当监听窗口的下拉事件或者输入框的输入事件时,会频繁的触发所监听的函数,我们并不想如此频繁的执行那些我们定义的函数,这样会造成一些不好的用户体验,接下来我们就开始解决这个问题 原理分析1:假如我们定义的监听函数名字是fun,那么问题的实质就是fun这个函数会被在短时间内调用多次,那么这样的话我们可以想到的是在每次将要调用fun函数时记录下当下的时间戳,不要立刻执行这个函数,而是设置一个定时器,在500毫秒之后再执行,同时再判断如果两次触发的时间间隔小于500毫秒那么就意味着上一次触发时的fu

如果Google面试让你用python写一个树的遍历程序

前几天忽然对python很感兴趣,学了几天也感觉它非常的简洁实用.打破了我这么长时间对java C# C 和vb的审美疲劳,让我眼前一亮."就像读英文一样简单"这句话评价python说的很合理. 我对python的好感很大部分是因为听说google很多程序用python,而且在google app engine里面和支持python.如果你去google面试或者笔试,很可能就会考到这个题:用python实现树的遍历. 自己试着写了一下,不过毕竟是菜鸟,有问题请多多指教. 运行效果如下:

Python写一个批量生成账号的函数

批量生成账户信息,产生的账户由@sina.com结尾,长度由用户输入,产生多少条也由用户输入,用户名不能重复,用户名必须由大写字母.小写字母和数字组成. 1 def Users(num,len): # num产生多少条信息,len账号的长度 2 ''' 3 用交集来判断是否包含大小写字母 4 :param num: 生成几条数据 5 :param len: 账号的长度 6 :return: 7 ''' 8 results = [] # 存放结果的数组 9 uppers = set(string.

用JavaScript写一个类似PHP print_r的函数

PHP print_r的函数很好用,网上娱乐城可以用来打印数组.对象等的结构与数据,可惜JavaScript并没有原生提供类似的函数.不过我们可以试着自己来实现这个函数,下面提供一些方法与思路. 方法一 function print_r(theObj) { var retStr = ''; if (typeof theObj == 'object') { retStr += '<div style="font-family:Tahoma; font-size:7pt;">'

写一个dup2功能同样的函数,不能调用 fcntl 函数,而且要有出错处理

实现的时候用到系统原来的dup函数 // mydup2.c // 2015/08/17 Lucifer Zhang version1.0 // write my own dup2 function // use dup() function when inplementation #include <unistd.h> // include dup() #include <stdio.h> #include <stdlib.h> #define OPEN_MAX 256