node.js - nodejs 将数据附加到读取流的末尾

标签 node.js stream pipe zipstream

我想读取一个 .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();
});

最佳答案

您可以实现转换(stream.Transform 的子类)。然后在它的 _flush 方法中,您可以在输入流结束时输出您想要的任何内容。这可以在可读流和可写流之间进行管道传输。有关实现细节,请参阅 Node 的流模块文档。

关于node.js - nodejs 将数据附加到读取流的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24820796/

相关文章:

javascript - 如何区分查询并获取最后的数据日期? (解析服务器)

javascript - 如何在 while 循环中串联连接 Promise

c - 管道上的非阻塞读取

python - Python 中的 BrokenPipeError 但 Perl 中没有

c++ - fork 子程序中要求与启动器程序进行管道通信

node.js - npm 抛出错误 "Cannot find module ' 可读流'”

javascript - 无法得到我在 nodejs/mongoose/bluebird 中返回的 promise

java - HttpURLConnection 关闭 IO 流

c++ - 根据属性选择 fstream 或 cout

node.js - 流上的 .pipe 和 pipeline 有什么区别