最近在折腾着用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安装

自己写的一个nodejs查找文件模块-node-find-all-files的更多相关文章

  1. Python 写了一个批量生成文件夹和批量重命名的工具

    Python 写了一个批量生成文件夹和批量重命名的工具 目录 Python 写了一个批量生成文件夹和批量重命名的工具 演示 功能 1. 可以读取excel内容,使用excel单元格内容进行新建文件夹, ...

  2. node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)

    第七章 建议学习时间4小时  课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...

  3. Linux中一个快速查找文件和目录的命令

    功能介绍: locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,值得注意的是:版本不同,会有所不 ...

  4. 自己写的一个用于往文件中插入字符串及空格的bat

    @echo off echo pleas input the filename:set /p file= :while rem set j=0 非得写这儿 写下面:check 上面不行 希望大神指点s ...

  5. 用Go语言写了一个电脑搜索文件的小东西

    package main import ( "bytes" "fmt" "os" "os/exec" "pat ...

  6. 【收藏】linux快速查找文件的技巧

    有时候,我们需要在系统中查找文件,Linux有一个非常优秀的搜寻系统. 一般提到搜寻文件的时候,很多人第一反应是find命令,但其实find不是常用的,因为速度慢,而且毁硬盘.一般我们都先用where ...

  7. 初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助

    初步学习nodejs,业余用node写个一个自动创建目录和文件的小脚本,希望对需要的人有所帮助,如果有bug或者更好的优化方案,也请批评与指正,谢谢,代码如下: var fs = require('f ...

  8. 大熊君大话NodeJS之------FS文件模块

    一,开篇分析 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集.可以通过调用 require("fs") 来获取该模块.文件系统模块中的所有方法均有异步和同步 ...

  9. 写了一个简单的NodeJS实现的进程间通信的例子

    1. cluster介绍 大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,有人开发了第三方的cluster,让node可以利用多核CPU ...

随机推荐

  1. Spring Boot 入门系列

    本系列博文版权 简书 面皮大师 所有,转载请标明原文及出处: http://www.jianshu.com/u/062bd8f1299c 项目地址: https://github.com/daleiw ...

  2. 苹果的 Metal 工程

    Basic Buffers 当向顶点着色器传递数据过多(大于 4096 字节)时, setVertexBytes:length:atIndex: 方法不允许使用,应该使用 setVertexBytes ...

  3. 架构师养成记--19.netty

    一.Netty初步 为什么选择Netty? 和NIO比较,要实现一个通信要简单得很多,性能很好.分布式消息中间件.storm.Dubble都是使用Netty作为底层通信. Netty5.0要求jdk1 ...

  4. 【ASP.NET】DataTable导出EXCEL,弹窗提示下载保存(完整代码)

    //新建ASPX protected void Page_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); Data ...

  5. 编程开发之--java多线程学习总结(2)同步代码块

    1.第一种解决办法:同步代码块,关键字synchronized package com.lfy.ThreadsSynchronize; /** * 1.使用同步代码块 * 语法: synchroniz ...

  6. SPI 用户空间的读写操作

    spi_device 虽然用户空间不需要直接用到spi_device结构体,但是这个结构体和用户空间的程序有密切的关系,理解它的成员有助于理解SPI设备节点的IOCTL命令,所以首先来介绍它.在内核中 ...

  7. 网络基础 02_TCP/IP模型

    1 TCP/IP参考模型概述   2 应用层 3 传输层 3.1 传输控制协议(TCP) 面向连接 可靠传输 流控及窗口机制 使用TCP的应用: Web浏览器:电子邮件: 文件传输程序 3.2 用户数 ...

  8. java中复制bean

    BeanUtils.copyProperties(p,d); p是等待被赋值的对象,d是源对象,将d中属性值赋值的p中对应的字段,d中有的属性p中必须有,p可以有更多属性

  9. 内核诊断(1)interrupt took too long

    The linux kernel gathers samples using 'perf' performance monitor without affecting the latencies. T ...

  10. Mac 10.12安装Go2Shell在资源管理器快速打开Shell并跳转到指定位置

    下载: (链接: https://pan.baidu.com/s/1qXAUqxY 密码: bf7g)