【模块】深度遍历目录/列出目录下所有文件
 发布于 12 年前  作者 leizongmin  28452 次预览  最后一次回复是 11 年前  来自  

使用方法:

var rd = require('rd');

// 异步列出目录下的所有文件
rd.read('/tmp', function (err, files) {
  if (err) throw err;
  // files是一个数组,里面是目录/tmp目录下的所有文件(包括子目录)
});

// 同步列出目录下的所有文件
var files = rd.readSync('/tmp');

// 异步遍历目录下的所有文件
rd.each('/tmp', function (f, s, next) {
  // 每找到一个文件都会调用一次此函数
  // 参数s是通过 fs.stat() 获取到的文件属性值
  console.log('file: %s', f);
  // 必须调用next()才能继续
  next();
}, function (err) {
  if (err) throw err;
  // 完成
});

// 同步遍历目录下的所有文件
rd.eachSync('/tmp', function (f, s) {
  // 每找到一个文件都会调用一次此函数
  // 参数s是通过 fs.stat() 获取到的文件属性值
  console.log('file: %s', f);
});

安装: $ npm install rd

源码: https://github.com/leizongmin/node-rd

13 回复
dengqiao

给个建议,nodejs下面直接throw err不是好方法,还是通过回调解决吧

dengqiao

不会意思,没看仔细,这个是使用方法不是lib

sumory

老雷速度很快,lincell已经用了这个.

leizongmin

为了给你的lincell用而专门写的

DoubleSpout

老雷辛苦啦,关注了这个项目,以后有机会用上方便找到啊

jiyinyiyong

https://github.com/thlorenz/readdirp 这个也是, 不过看起来很复杂的样子

leizongmin

还是我这个够简洁,功能还强大

leizongmin

你的rrestjs那个自动路由模块,好像不能载入子目录的文件吧?用了这个模块就很方便实现了

bijiabo

亲 你的lincell会让浏览器卡死@@ 。。。不知道怎么回事

xujun52011

不如exec(‘ll -R’)来得快

JacksonTian

我好像写过一个类似的iwalk,还能防止open file too many问题。

leizongmin

这个模块也不会出现 open file too many 的,有限制并发数量