如何在数组nodejs中添加某个types的所有文件?

我遍历一个文件夹及其子文件夹,并试图将所有.jss文件添加到数组中:

function getJssFromDir(directory,arr) { fs.stat(directory,function (err, stats) { if (stats.isFile()) { //check if its jss file if (path.extname(directory) === '.jss') { arr.push(directory); } } else if (stats.isDirectory()) { fs.readdir(directory, function(err, files) { if (err) throw err; for (var i=0; i<files.length; i++) { getJssFromDir(directory+'/'+files[i],arr); } }); } }); } 

然后试图打印它,我什么都看不到:

 var array = []; getJssFromDir('c:/internet',array); console.log(array); 

当我尝试在getJssFromDIR中打印数组时,我在做什么错误我看到了所有要添加到数组中的文件。

当你读一个目录时,你正在读取磁盘。 这需要时间。 在node.js中,任何IO操作的时候都需要callback,因为它不会马上被执行。

您需要将callback添加到getJssFromDir函数中,并使用callback来调用它。

但是,由于您正在进行recursion调用,因此可能会复杂地pipe理所有的callback。 已经有很多图书馆为这种情况,我build议findit

 var array = []; var finder = require('findit').find('c:/internet'); finder.on('file', function(file) { if (path.extname(directory) === '.jss') { array.push(file); } }); finder.on('end', function() { console.log(array); });