Reputation:
Wanting to write large binary files to disk using NodeJS but WriteStream.write is async and closing before file is written, resulting in an empty file.
Upvotes: 0
Views: 429
Reputation:
This is what I got to work.
var crypto = require('crypto');
var fs = require('fs');
function writeFile(i) {
const fileKey = Math.floor(Math.random()*2000*1000*500);
var wstream = fs.createWriteStream(`myBinaryFile${fileKey}.dat`);
// create another Buffer of 100 bytes and write
const fileSize = Math.floor(Math.random()*2000*1000*500);
console.log(`Writing ${Math.floor(fileSize/1000/1000)} MB to file ${i} with id ${fileKey}`)
wstream.write(crypto.randomBytes(fileSize));
wstream.end();
wstream.on("finish", function() {
setTimeout(() => {
writeFile(i+1)
}, 15000);
});
}
writeFile(0);
setInterval(() => {}, 1000);
Upvotes: 1