获取在zlibstream中读取的字节数

我正在使用zlib.Inflate来膨胀一大块数据。 我现在的问题是,我所知道的是有多less个未压缩的数据字节,但没有多less压缩的数据stream。 我目前只是写入整个input缓冲区到inflater,然后从它读取未压缩的字节数量。 这给了我正确的输出数据,但我必须知道有多less字节被用来继续parsing剩余的数据。

所以现在我做了以下testing:

  var inflater = zlib.createInflate(); inflater.write(strm.buffer.slice(strm.position)); inflater.on("readable", (function(inflater, len) { return function() { console.log(inflater); var decompData = inflater.read(len); console.log(inflater); var output = fs.createWriteStream("output.bin"); output.write(decompData); } })(inflater, len)); 

我在读取之前和之后检查了充电器的所有成员,但是没有任何变化,除了读缓冲器(具有解压缩的数据)之外的每个值都是相同的。 有没有一种方法可以确定从压缩缓冲区读取了多less个字节?

先谢谢了,Cromon

       

网上收集的解决方案 "获取在zlibstream中读取的字节数"

在调查了zlib解压缩模块中涉及的C ++和JavaScript文件之后,我意识到这些文件都丢弃了多less数据被读取的信息。 由于本地zlibstream不可用于JavaScript,因此无法获取有关消耗的字节量的信息。

我改变了Zlib.prototype._transform来检查有多less字节被读取,并更新了Zlib中保存消耗字节数的成员。 有了它,它就像一个魅力: stream.seek(inflater._consumed);

这可能没有太多的帮助,除了在我看来,它不可能做到这一点与当前zlib模块的布局。