我需要遍历给定目录中的文件,并读取每个文件的内容。像这样:
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});
});
}
}
})
现在我得到以下结果,请注意&#34; C&#34;行:
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.statSync
和fs.readFileSync
按顺序读取文件。更不用说使用let
了。感谢@ x-ray和@Skabbi的帮助。
答案 0 :(得分:1)
var name=$(select).attr('name');
var matches = name.match(/\[(.*?)\]/);
var number=matches[1];
是一个异步函数。您可以使用fs.lstat
来获得所需的行为。
答案 1 :(得分:0)
获得输出
B:B05.txt
一遍又一遍似乎是一个简单的范围问题。
尝试使用&#34;让fileName&#34;。