依次使用node.js读取目录内所有文件的内容

我需要遍历给定目录中的文件,并阅读每个文件的内容。 喜欢这个:

fs.readdir(dirPath, (err, dir)=>{ for(var i=0; i<dir.length; i++){ fileName = dir[i]; console.log("A: "+fileName); fs.lstat(dir+"\"+fileName, function(err, stats) { console.log("B: "+fileName); }); } }) 

以上代码的输出是:

 A: B01.txt A: B02.txt A: B03.txt A: B04.txt A: B05.txt B: B05.txt B: B05.txt B: B05.txt B: B05.txt B: B05.txt 

虽然我期望输出是这样的:

 A: B01.txt B: B01.txt A: B02.txt B: B02.txt ... etc 

我如何顺序循环遍历目录中的每个文件并以正确的方式读取它?

编辑

我更新了我的代码,使用statSyn,如下所示,以及添加读取文件的内容代码:

 let content = ""; fs.readdir(dirPath, (err, dir)=>{ for(var i=0; i<dir.length; i++){ let fileName = dir[i]; let filePath=dirPath+"/"+fileName; console.log("A: "+fileName); stat = fs.statSync(filePath); if(stat.isFile()){ console.log("B: "+fileName); fs.readFile(filePath, 'utf8', function (err,data) { if (err) { console.log(err); } console.log("C: "+ fileName); mainWindow.webContents.send('getContent' , {msg:data}); }); } } }) 

现在我得到以下结果,请注意“C”行:

 A: B01.txt B: B01.txt A: B02.txt B: B02.txt A: B03.txt B: B03.txt A: B04.txt B: B04.txt A: B05.txt B: B05.txt C: B01.txt C: B05.txt C: B02.txt C: B03.txt C: B04.txt 

我设法读取所有文件,但不是为了。 我怎样才能确保我阅读他们?

修正

我结束了使用fs.statSyncfs.readFileSync按顺序读取文件。 更不用说使用let 。 感谢@ x-ray和@Skabbi的帮助。

你得到输出

B:B05.txt

一遍又一遍似乎是一个简单的范围界定问题。

尝试使用“let fileName”。

fs.lstat是一个asynchronous函数。 您可以使用fs.lstatSync来获取所需的行为。