Node.js - 将两个可读流写入同一个可写流

5
我想知道如果你同时将两个不同的读取流管道传输到相同的目标中,node.js会如何操作。例如:
var a = fs.createReadStream('a')
var b = fs.createReadStream('b')
var c = fs.createWriteStream('c')
a.pipe(c, {end:false})
b.pipe(c, {end:false})

这段代码将 a 写入 c,然后将 b 写入 c。还是会出现问题?

流是建立在事件发射器之上的。这使得数据块可以被读取并传输到你正在写入的文件中。最安全的做法是假设每个块都可能来自任何管道,因此你在文件中得到的内容可能会混乱不清。然而,在我的机器上进行的测试表明,在Node v0.11.10上对于小文件进行简单的串联是可行的。即便如此,我仍然建议避免这样做。 - qubyte
1
这也是我所期望的。那么在开始b之前,我必须等待a结束。 - B T
1个回答

4
您希望将第二次读取添加到第一次读取完成的事件监听器中。
var a = fs.createReadStream('a');
var b = fs.createReadStream('b');
var c = fs.createWriteStream('c');
a.pipe(c, {end:false});
a.on('end', function() {
  b.pipe(c)
}

2
能够动态地使用可读流的数量,在可读流数组的某种循环中实现吗? - user1063287

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接