我想用stream读取文件来更新UI进度条。但在我开始尝试fs.createReadStream之后,我注意到我收到了不同的结果。例如:
var d = fs.readFileSync('file.bin', null);
console.log(d);
console.log(d.byteLength);
在控制台中返回:
缓冲区(188000)
188000
但是这段代码:
var rd = fs.createReadStream('file.bin');
var data = '';
rd.on("error", function(err) {
console.log(err);
});
rd.on("data", function(chunk) {
console.log(chunk.length);
data += chunk;
});
rd.on("end", function() {
console.log('There will be no more data.');
var buf = Buffer.from(data, null);
console.log(buf)
console.log(buf.byteLength)
});
在控制台中返回:
Uint8Array(297684)
297684
为什么流返回Uint8Array
而不是Buffer
对象以及为什么它们具有不同的大小