-
-
Notifications
You must be signed in to change notification settings - Fork 34.7k
Closed
Labels
confirmed-bugIssues with confirmed bugs.Issues with confirmed bugs.fsIssues and PRs related to the fs subsystem / file system.Issues and PRs related to the fs subsystem / file system.
Description
- 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:
var fs = require('fs');
var buffer = Buffer.alloc(8192);
var path = 'test-sparse-read-file';
var fd = 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()...');
var bytesRead = fs.readSync(fd, buffer, 0, 8192, 0);
if (bytesRead !== 8192) {
throw new Error('readSync() read ' + bytesRead + ' bytes');
} else {
console.log('readSync() read ' + bytesRead + ' bytes');
}
console.log('\r\nreading entire file using readFileSync()...');
var result = fs.readFileSync(fd);
if (result.length !== buffer.length) {
throw new Error('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.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
confirmed-bugIssues with confirmed bugs.Issues with confirmed bugs.fsIssues and PRs related to the fs subsystem / file system.Issues and PRs related to the fs subsystem / file system.