我想從路徑獲取文件和目錄的所有名稱,並將它們識別爲文件和目錄。但是當我運行我的代碼有時它的工作和somentimes它顯示目錄是文件。這裏是我意識到,當我data.forEach循環減慢(使用的console.log(東西)它工作得更好(少小姐)代碼節點isDirectory()無法正常工作或者我不知所措
socket.on('data',function(path){
fs.readdir('path',function(err, data) {
var filestatus=[];
var z=0;
var i=data.length-1;
data.forEach(function(file){
fs.stat(file, function(err, stats) {
filestatus[z]=stats.isDirectory()
if (z==i){
socket.emit('backinfo',{names:data,status:filestatus});
}
z++;
})
})
})
})
在測試過程中,這是奇怪的。
1.注意'FS .readdir的結果只是名字,而不是完整的程序。 2.在檢查與「i」相等之前是否應該增加「z」? 3.查看[async](https://github.com/caolan/async)。 – elmigranto
您不會在fs.stat回調中檢查'err',正如elmigranto指出的那樣,'file'只是文件名,而不是路徑,所以在調用'fs時需要在這些名稱前加上'path'。 stat'。 – JohnnyHK