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");
});
ながら私はこのようなストリーム場合:
let data, chunk;
readableStream
.on('readable',() => {
while ((chunk=stream.read()) !== null) {
writableStream.write(chunk)
}
})
.on('end',()=>{
console.log("done");
});
全てが微細であり、以下のように予想される:
すなわち、バイト単位で追加のオーバーヘッドがある/最初の例で追加された?それはなぜ追加されますか?何がうまくいかない?
私に教えてくれてありがとう!
注:私は(私に正しい出力ファイルを与える)pipe
を使用しての認識していますが、これらの例は、ちょうど私の理解のためのものです。
はい、あなたは正しいです。 'data = Buffer.from([]);'を実行し、 'data = Buffer.concat([data、chunk]);'を使うと、ファイルが正しく出力されます。私の愚かな、私は文字列型に変換していたことを認識していない。 –
または実際には、そのJavaScriptは文字列型に変換していた... :) –