Ich versuche, kleine Dateien mit Streaming in eine Datei zusammenzuführen. Nachdem ich die Daten schreiben und streamWrite.end()
aufrufen, ist die Dateigröße immer noch 0. Wenn das Programm beendet ist, wird die Datei mit den Daten gefüllt, die ich geschrieben habe.Nodejs Stream aktualisiert die Datei nach dem Ende nicht
Meine Frage ist: warum die Dateigröße 0 war, nachdem ich writeStream.end() aufgerufen habe und wie man das löst?
Hier ist der gesamte Code
var fs = require('fs');
function createRandomJsonFiles(destPath,numOfFiles,minFileSize)
{
for(var i=0;i<numOfFiles;i++){
var tmp = {};
tmp.k1 = new Array(Math.floor(Math.random() * minFileSize) + minFileSize).join('a');
fs.writeFileSync(destPath+'/testfile.'+i, JSON.stringify(tmp));
}
}
createRandomJsonFiles("./testFiles/",1000,100); // create some files
var streamWrite = fs.createWriteStream('write.tst');
var files = fs.readdirSync("./testFiles/");
for (var i = 0; i < files.length; ++i) { // merge the files to one file
var inputPath = "./testFiles/" + files[i];
var file_data = fs.readFileSync(inputPath).toString();
var canContinue = streamWrite.write(file_data); // write the chunk to the file system and close the stream
if (!canContinue){
streamWrite.emit('drain');
}
}
streamWrite.end();
var chunkContent = fs.readFileSync('write.tst').toString();
console.log(chunkContent);
Diese Lösung, um die letzten 3 Zeilen Code ändern nicht helfen: http://stackoverflow.com/questions/18932488/how-can-i-use-the-drain-event -mit-createwritestream-method-in-node-js –