【问题标题】:node.js - writing two readable streams into the same writable streamnode.js - 将两个可读流写入同一个可写流
【发布时间】:2014-03-13 03:20:36
【问题描述】:

我想知道如果您将两个不同的读取流同时通过管道传输到同一个目的地,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 上小文件的简单连接。即便如此,我还是会避免这样做。
  • 这也是我所期望的。所以我必须等到a结束才能开始b。

标签: node.js stream


【解决方案1】:

您想将第二次读取添加到事件侦听器中以完成第一次读取。

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)
}

【讨论】:

  • 这可以通过动态数量的可读流来实现吗?在可读流数组的某种循环中?
猜你喜欢
  • 2012-12-19
  • 1970-01-01
  • 2016-06-04
  • 2010-11-05
  • 2019-03-04
  • 2021-09-15
  • 2020-10-31
  • 2018-06-04
  • 2017-01-15
相关资源
最近更新 更多