【问题标题】:nodejs appending data to the end of a readstreamnodejs将数据附加到读取流的末尾
【发布时间】:2014-09-09 08:14:27
【问题描述】:

我想读取一个 .txt 文件,将数据附加到末尾,最后将其发送到 zipstream。现在我正在做的是编写一个新文件,然后将新文件用于 zipstream,但我想即时执行此操作,而不创建不必要的新文件。

我的问题是如何创建一个读取流,修改它并发送到另一个读取流(可能中间有一个写入流)。

这可能吗?

最初的想法是这个,但我在中间的某个地方迷路了:

var zipstream = require('zipstream');
var Stream = require('stream');

var zipOut = fs.createWriteStream('file.zip');
var zip = zipstream.createZip({ level : 1 });
zip.pipe(zipOut);

var rs = fs.createReadStream('file.txt');
var newRs = new Stream(); // << Here should be an in/out stream??
newRs.pipe = function(dest) {
  dest.write(rs.read());
  dest.write("New text at the end");
};
zip.addEntry(newRs, {name : 'file.txt'}, function() {
  zip.finalize();
});

【问题讨论】:

    标签: node.js stream pipe zipstream


    【解决方案1】:

    您可以实现转换(stream.Transform 的子类)。然后在其 _flush 方法中,您可以在输入流到达末尾时输出您想要的任何内容。这可以在可读流和可写流之间通过管道传输。参考节点的流模块文档了解实现细节。

    【讨论】:

    • 放一些示例代码并分享模块文档的链接如何?这将使这是一个很好的答案:)
    猜你喜欢
    • 1970-01-01
    • 2019-07-08
    • 2015-01-25
    • 2015-04-09
    • 2017-03-26
    • 1970-01-01
    • 2017-06-15
    • 2011-04-06
    • 2023-03-07
    相关资源
    最近更新 更多