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安装

  • 相关阅读:
    linux -- Ubuntu 安装搜狗输入法
    linux -- Ubuntuserver图形界面下安装、配置lampp、phpmyadmin
    linux -- ubuntu14.10安装gnome桌面环境和dock工具
    linux -- Ubuntu Server 安装图形界面
    linux -- Ubuntu 命令技巧合集
    linux -- ubuntu 何为软件源
    linux -- Ubuntu报错“unable to locate package...”
    linux -- Ubuntu图形界面终端实现注销、关机、重启
    php -- 读取文本文件内容
    NEXTDAY
  • 原文地址:https://www.cnblogs.com/subying/p/nodejs-find-all-files.html
Copyright © 2011-2022 走看看