所以我试图创建一个简单的函数,列出一个集合目录中的所有文件和文件夹,在我的情况下,文件是“攻击模块”。但无论如何我有下面的功能工作一点点,但如果有任何子文件夹中的文件,它会崩溃
function getAttackModuleFiles(where, name, parentFolder){
var parentFolder = parentFolder
console.log('p1 '+parentFolder)
sub++
var path = 'adminPanel/attackModules/'
fs.readdir(where, (err, files) => {
if(err){
console.log(err)
}
files.forEach(name => {
console.log(sub)
var stats = fs.statSync(where+name);
if(stats.isFile() == true){
var dir = path+parentFolder+'/'+name
socket.emit('attackModule','file',name, parentFolder, sub, dir)
}if(stats.isDirectory() == true){
/*
if(sub == 2){
getAttackModuleFiles(path+name+'/',name, name)
//getAttackModuleFiles(path+parentFolder+'/'+name+'/',name, parentFolder)
socket.emit('attackModule','dir',name, name, sub)
}else
if( sub ==1){
*/
getAttackModuleFiles(path+name+'/',name, name)
console.log(name)
socket.emit('attackModule','dir',name, name, sub)
// }
}
});
})
}
我还没有足够的知识知道如何解决这个问题,有人可以帮我弄清楚如何能够无限制地列出文件和文件夹
答案 0 :(得分:1)
使用Walker模块有更简单的方法,其优点是
它会发出各种可以监听的事件,例如查找目录,查找文件,查找符号链接,出错等事件。
var walker = require('walker');
if (process.argv.length <= 2) {
console.log("Usage: " + __filename + " path/to/directory");
process.exit(-1);
}
var path = process.argv[2];
walker(path)
.on('dir', function(dir, stat) {
console.log('Got directory: ' + dir)
})
.on('file', function(file, stat) {
console.log('Got file: ' + file)
})
.on('end', function() {
console.log('All files traversed.')
});
在执行node index.js testDir/