【发布时间】:2019-09-12 23:09:59
【问题描述】:
我想将文件的夹头合并到另一个文件,但 writeStream 正在发出关闭而不将 readStream 内容写入或附加到输出文件。
我有一个带有 for-of 循环的 async 函数,该循环遍历数组并在循环内我创建了一个 writableStream 带有标志 write truncate/write w flag if iteration index is 0 else append @987654326 @ 然后创建一个 readStream 然后将其通过管道传输到 writeStream。
async function mergeBlocks(op) {
for (const [index, block] of op.blockObjects.entries()) {
const flags = index === 0? 'w' : 'a'
const w = createWriteStream(op.output, { start: block.start, flags }),
r = createReadStream(block.path, { start: block.start, end: block.end })
console.log(index)
r.pipe(w)
await new Promise(res =>
w.on('finish', () => {
console.log('close')
res()
})
)
}
}
但它只写入第一个块并关闭writeStream,而不写入输出文件以供其他迭代使用。请问我做错了什么?
编辑检查下面的答案。
【问题讨论】:
-
为什么不创建一个单独的 writeStream,并在循环中继续追加它?如果您当前的代码产生错误消息,请将它们添加到您的问题中。
-
@ChrisG 这就是问题所在,没有错误消息,但让我们再试一次 writeStream。
标签: javascript node.js node-streams