Recursivly read a directory in NodeJS
我对服务器端编程和nodejs非常陌生
我需要递归地读取一个目录来获取这个目录中每个文件的文件名(应该返回一个文件名数组(相对路径))。
我认为这是很常见的事情,所以我希望有人可以共享代码。或者告诉我正确的调用方法。谢谢
使用node dir模块的files方法可以很容易地做到这一点:
安装模块
1 | npm install node-dir |
那么代码就简单到
1 2 3 4 5 6 | var dir = require('node-dir'); dir.files(__dirname, function(err, files) { if (err) throw err; console.log(files); }); |
这将在所有子目录中重复出现,结果将是一个文件路径数组。
这是我第一枪。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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); }); |
当然,您可以在全局数组中推送值,而不是回调处理函数中的
这也可能有帮助:递归地对每个文件执行异步任务,完成后执行回调
查看loaddirhttps://npmjs.org/package/loaddir网站
1 2 3 4 5 6 7 | loaddir = require('loaddir') allJavascripts = [] loaddir({ path: __dirname + '/public/javascripts', callback: function(){ allJavascripts.push(this.relativePath + this.baseName); } }) |
如果需要扩展,也可以使用