0
我遇到了意外的行为,涉及fs.createReadStream
和fs.createWriteStream
。我希望有人能指出,我做出了错误的假设:可读可写的流意外行为
我创建这样
let readableStream = fs.createReadStream('./lorem ipsum.doc');
let writableStream = fs.createWriteStream('./output');
可读和可写流为什么,如果我读流发送到写入流这样
let data, chunk;
readableStream
.on('readable',() => {
while ((chunk=stream.read()) !== null) {
data+=chunk;
}
})
.on('end',()=>{
writableStream.write(data)
console.log("done");
});
我结束了在输出文件差异:
而如果I流是这样的:
let data, chunk;
readableStream
.on('readable',() => {
while ((chunk=stream.read()) !== null) {
writableStream.write(chunk)
}
})
.on('end',()=>{
console.log("done");
});
所有细而如预期:
即,在第一例中,何时/何是以字节为单位的额外开销添加?为什么添加?出了什么问题?
感谢您的启发!
注:我知道使用pipe
(这给了我正确的输出文件),但这些例子只是我的理解。
是的,你说得对。如果我做'let data = Buffer.from([]);',然后使用'data = Buffer.concat([data,chunk]);',文件就出来了。我愚蠢的,我没有意识到我正在转换为字符串类型。 –
或者实际上,这个JavaScript转换为字符串类型... :) –