递归读取Node JS中的目录

时间:2011-07-06 21:59:25

标签: javascript node.js

我是服务器端编程和NodeJS的新手

我需要递归读取目录以获取此目录中每个文件的文件名(应返回文件名(相对路径)数组)

我认为这是非常常见的事情,所以我希望有人可以分享代码。或者告诉我正确的方法。 感谢

4 个答案:

答案 0 :(得分:3)

您可以使用node-dir module

的文件方法轻松完成此操作

安装模块

npm install node-dir

然后代码就像

一样简单
var dir = require('node-dir');

dir.files(__dirname, function(err, files) {
  if (err) throw err;
  console.log(files);
});

这将遍历所有子目录,结果将是一个文件路径数组。

答案 1 :(得分:2)

这是我的第一次拍摄。

fs = require('fs');

function getDirectoryFiles(directory, callback) {
  fs.readdir(directory, function(err, files) {
    files.forEach(function(file){
      fs.stat(directory + '/' + file, function(err, stats) {
        if(stats.isFile()) {
          callback(directory + '/' + file);
        }
        if(stats.isDirectory()) {
          getDirectoryFiles(directory + '/' + file, callback);
        }
      });
    });
  });
}

getDirectoryFiles('.', function(file_with_path) {
  console.log(file_with_path);
});

当然,您可以在全局数组中推送值,而不是回调处理函数中的console.log

答案 2 :(得分:1)

答案 3 :(得分:0)

检查loaddir https://npmjs.org/package/loaddir

npm install loaddir

  loaddir = require('loaddir')

  allJavascripts = []
  loaddir({
    path: __dirname + '/public/javascripts',
    callback: function(){  allJavascripts.push(this.relativePath + this.baseName); }
  })

如果您还需要扩展程序,则可以使用fileName代替baseName