通常我想扫描整个目录树(一个目录,以及其中的所有内容,包括文件、子目录和那些子目录内容,以及它们的子目录内容等等)。
使用节点如何实现这一点?要求,是它应该是异步的,以利用超快速的非阻塞 IO - 并且一次处理太多文件时不会崩溃。
通常我想扫描整个目录树(一个目录,以及其中的所有内容,包括文件、子目录和那些子目录内容,以及它们的子目录内容等等)。
使用节点如何实现这一点?要求,是它应该是异步的,以利用超快速的非阻塞 IO - 并且一次处理太多文件时不会崩溃。
-- 我在 2017 年更新了这个答案,了解自 2012 年以来的进展 --
最终创建了这些来完成它:
https://github.com/bevry/safefs - 现在使用https://npmjs.org/package/graceful-fs(以前不存在)
https://github.com/bevry/scandirectory - 现在也有大量类似的项目
我还创建了这个轻量级且超快的:
如果你想实现它,你可以使用模块npm dree。它返回一个描述目录树的 json,它还允许你指定一个 fileCallback 和一个 dirCallback,所以你可以这样做:
这是代码:
const dree = require('dree');
const fileCb = function(file) {
// do what you want
}
const dirCb = function(directory) {
// do what you want
}
dree.scan('path-to-directory', { extensions: [ 'html', 'js' ] }, fileCb, dirCb);