zoukankan      html  css  js  c++  java
  • 写一个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);
        }
    });
  • 相关阅读:
    read 命令详解
    rpm 命令详解
    random 模块
    time 模块
    Numpy 数据类型和基本操作
    numpy 数组对象
    netstat 命令详解
    free 命令详解
    Python中*args和**kwargs 的简单使用
    Numpy 数组简单操作
  • 原文地址:https://www.cnblogs.com/zhoulingfeng/p/5793256.html
Copyright © 2011-2022 走看看