- Version: v7.1.0
- Platform: Windows 10 64-bit
- Subsystem: fs
I wrote a small test that passes on Mac and Linux but throws on Windows:
varfs=require('fs');varbuffer=Buffer.alloc(8192);varpath='test-sparse-read-file';varfd=fs.openSync(path,'w+');console.log('created or truncated, sparse file size is now: '+fs.fstatSync(fd).size);console.log('writing 1 byte at offset '+(8192-1));fs.writeSync(fd,Buffer.alloc(1,1),0,1,8192-1);console.log('sparse file size is now: '+fs.fstatSync(fd).size+'\r\n');console.log('reading 8192 bytes using readSync()...');varbytesRead=fs.readSync(fd,buffer,0,8192,0);if(bytesRead!==8192){thrownewError('readSync() read '+bytesRead+' bytes');}else{console.log('readSync() read '+bytesRead+' bytes');}console.log('\r\nreading entire file using readFileSync()...');varresult=fs.readFileSync(fd);if(result.length!==buffer.length){thrownewError('readFileSync returned a buffer with length '+result.length);}else{console.log('readFileSync returned a buffer with length '+result.length);}fs.closeSync(fd);fs.unlinkSync(path);console.log('\r\nPASSED');Linux:
created or truncated, sparse file size is now: 0
writing 1 byte at offset 8191
sparse file size is now: 8192
reading 8192 bytes using readSync()...
readSync() read 8192 bytes
reading entire file using readFileSync()...
readFileSync returned a buffer with length 8192
PASSED
Windows:
created or truncated, sparse file size is now: 0
writing 1 byte at offset 8191
sparse file size is now: 8192
reading 8192 bytes using readSync()...
readSync() read 8192 bytes
reading entire file using readFileSync()...
C:\Users\Joran\test-sparse.js:22
throw new Error('readFileSync returned a buffer with length ' + result.length);
^
Error: readFileSync returned a buffer with length 0
at Object.<anonymous> (C:\Users\Joran\test-sparse.js:22:9)
at Module._compile (module.js:573:32)
at Object.Module._extensions..js (module.js:582:10)
at Module.load (module.js:490:32)
at tryModuleLoad (module.js:449:12)
at Function.Module._load (module.js:441:3)
at Module.runMain (module.js:607:10)
at run (bootstrap_node.js:420:7)
at startup (bootstrap_node.js:139:9)
at bootstrap_node.js:535:3
The test shows that the problem does not appear to be with read() but only with readFileSync().
readFile() has the same issue.
I wrote a small test that passes on Mac and Linux but throws on Windows:
Linux:
Windows:
The test shows that the problem does not appear to be with read() but only with readFileSync().
readFile() has the same issue.