いくつかのファイルを読み込み、その名前をnodejsの配列に格納しようとしています。私は機能を作った。ファイルを読み込んでコンソールに出力しますが、配列の出力は[]です。私はnode.jsが非同期だと仮定していますが、コールバックがそれを修正すると思いましたか?ファイルを非同期で読み取る
readCurdir("./uploads/", curDirReadFinn);
function readCurdir(dir, callback){
var tmpArray = [];
fs.readdir(dir, function(err, files){
if(err){
if(err.code==='EISDIR'){}
else{
console.log(err);
}
return;
}
files.forEach(function(file){
fs.readFile(dir + file, 'utf-8', function(err, data){
if(err){
if(err.code==='EISDIR'){}
else{
console.log(err);
}
return;
}
tmpArray.push(file);
console.log(file); //this prints
});
});
});
callback(tmpArray);
}
function curDirReadFinn(array){
console.log(array); //Output: []
}
また、私はこれを試してみました:
files.forEach(function(file){
fs.readFile(dir + file, 'utf-8', function(err, data){
if(err){
if(err.code==='EISDIR'){}
else{
console.log(err);
}
return;
}
tmpArray.push(file);
counter++;
if(counter === files.lenght){
callback(tmpArray);
}
});
});
あなたはおそらく 'tmpArrayを行う必要があります.push(data); '今はファイル参照を保存しています。 – Quirk
はい私はファイル名を格納しています、それがポイントです。理由は、私はファイルを(fs.readFile)を読んでいるので、私は、フォルダをフィルタリングしたいです。 – OlaStein
すべてのファイルを読み込むのはちょっと残念ですが、[stat](https://nodejs.org/api/fs.html#fs_fs_stat_path_callback)と[checkher wetFile()](https:// nodejs .org/api/fs.html#fs_class_fs_stats)、ファイルシステムからすべてのデータを読み取ることはありません – Thomas