zoukankan      html  css  js  c++  java
  • 自己写的一个nodejs查找文件模块-node-find-all-files

    最近在折腾着用node-webkit搭建一个工具,其中要查找路径下的所有文件然后再进行压缩等操作,于是进写了这样的一个模块。代码如下:

    /*
    输入目录找出目录下的所有文件,包括文件夹
    */
    
    /*
    依赖模块 nodejs模块 fs  path
     */
    var fs = require('fs')
        ,path = require('path')
    ;
    
    var shortcuts = {
            'file': 'File'
            ,'dir': 'Directory'
        }
        ,pty = {}
    ;
    Object.keys(shortcuts).forEach(function(key){
        pty[key] = function(fpath){
            var stat = fs.statSync;
            if (fs.existsSync(fpath)) {
                return stat(fpath)['is' + shortcuts[key]]();
            }
            return false;
        }
    });
    
    
    /*
    对目录进行递归
    */
    var subDir = function(parent, cb) {
      if (pty.dir(parent)) {//如果是目录
        fs.readdir(parent, function(err, all) {//读取目录
          all && all.forEach(function(f) {//遍历目录先的文件和文件夹
            var sdir = path.join(parent, f);
            cb.call(null, sdir);
          });
        });
      }
    };
    
    /*
    文件判断并记录
    fpath 为文件路径
    obj 存储对象
    */
    var memoFiles = function(fpath,obj){
        var _dir = path.dirname(fpath);
        if(pty.file(fpath)){
            obj[fpath] = {type:'file',dirname:_dir};// type 类型(文件、文件夹) dirname 上一级的路径
        }else if(pty.dir(fpath)){
            obj[fpath] = {type:'direcotry',dirname:_dir};
            subDir(fpath,function(sdir){
                memoFiles(sdir,obj);
            });
        }
    };
    
    
    /*
    fpath 为文件目录
    */
    var findFiles = function(fpath){
        var allFiles = {};//文件缓存区
        memoFiles(fpath,allFiles);
    
        return allFiles;
    };
    
    module.exports = findFiles;

    本模块依赖的是nodejs自身的模块fs path,不需要安装其他的模块,使用方法就是用nodejs的require即可(require(文件路径)),因本模块没有提交到npm,所以不支持npm安装

  • 相关阅读:
    如何安全的创建线程池?
    【Java Proxy Pattern】Java的代理模式
    php全局变量/局部变量/静态变量
    php strstr()
    微信公众号开发(四):js-sdk的应用
    微信公众号平台开发(三):几大微信接口的调用
    php操作数据库
    微信公众号开发(一)--开发模式与编辑模式
    微信公众平台开发(二):交互与接口
    day6 字典的增减查删
  • 原文地址:https://www.cnblogs.com/subying/p/nodejs-find-all-files.html
Copyright © 2011-2022 走看看