【发布时间】:2017-04-11 18:51:37
【问题描述】:
我正在编写一个应用程序,我需要从流中删除第一个 X 和最后一个 Y 字节。所以我需要的基本上是一个可以传递给pipe 的函数,它将X 和Y 作为参数,并在流通过时从流中删除所需的字节数。我的简化设置是这样的:
const rs = fs.createReadStream('some_file')
const ws = fs.createWriteStream('some_other_file')
rs.pipe(streamPadding(128, 512)).pipe(ws)
之后,some_other_file应该包含some_file的所有内容减去前128个字节和后512个字节。我已经阅读了有关流的内容,但无法弄清楚如何正确执行此操作,以便它还可以处理传输期间的错误并正确执行背压。
据我所知,我需要一个双工流,每当我从它读取数据时,就从它的输入流中读取数据,跟踪我们在流中的位置,并在发出数据之前跳过前 128 个字节。一些关于如何实施的提示将非常有帮助。
第二部分似乎更难,如果不是不可能的话,因为在输入流实际关闭之前,我怎么知道我是否已经达到最后 512 个字节。我怀疑这可能是不可能的,但我相信一定有办法解决这个问题,所以如果您对此有任何建议,我将非常感激!
【问题讨论】: