How can we create an empty file of certain size? I have a requirement where I need to create an empty file (i.e. file filled with zero bytes). In order to do so, this is the approach I am currently taking:
- I create an empty file of zero byte size.
- Next I keep on appending zero bytes buffer (max 2 GB at a time) to that file till I reach the desired size.
Here's the code I am using currently:
const createEmptyFileOfSize = (fileName, size) => {
return new Promise((resolve, reject) => {
try {
//First create an empty file.
fs.writeFile(fileName, Buffer.alloc(0), (error) => {
if (error) {
reject(error);
} else {
let sizeRemaining = size;
do {
const chunkSize = Math.min(sizeRemaining, buffer.kMaxLength);
const dataBuffer = Buffer.alloc(chunkSize);
try {
fs.appendFileSync(fileName, dataBuffer);
sizeRemaining -= chunkSize;
} catch (error) {
reject(error);
}
} while (sizeRemaining > 0);
resolve(true);
}
});
} catch (error) {
reject(error);
}
});
};
While this code works and I am able to create very large files (though it takes significant time to create an empty large file [roughly about 5 seconds to create a 10 GB file]) however I am wondering if there's a better way of accomplishing this.