我想读取一个.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将数据追加到readstream的末尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24820796/

10-09 20:13
查看更多