user1630889
user1630889

Reputation:

How to write large random binary file with NodeJS

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

Answers (1)

user1630889
user1630889

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

Related Questions