解析zip文件的字节数?

时间:2015-12-08 22:54:18

标签: node.js parsing zip compression adm-zip

我正在从API请求一个zip文件,我正在尝试按字节范围(设置Range标头)检索它,然后单独解析每个部分。在阅读了一些关于gzip和zip压缩的内容之后,我很难搞清楚:

我可以从zip文件中解析一部分吗?

我知道gzip文件通常会压缩单个文件,因此您可以对其进行解压缩和解析,但是zip文件呢?

我正在使用node-js并尝试过几个类似adm-zipzlib的库,但看起来它们不允许这种可能性。

1 个答案:

答案 0 :(得分:0)

Zip文件在文件末尾有一个目录(除了每个项目之前的相同基本信息),它列出了每个项目的zip文件中的文件名和位置。通常每个项目都使用deflate进行压缩,这与gzip使用的算法相同(但gzip在deflate流之前有一个自定义标头)。

所以是的,为zip文件中的一个项目提取压缩字节流是完全可行的,并且预先构建一个伪造的gzip头(IIRC 14字节是此头的最小大小)以允许您解压缩将该文件传递给gunzip只是该文件。

如果您想编写代码以自行充气缩小的流,我建议您制定不同的计划。我已经做到了,而且真的不好玩。如果必须这样做,请使用zlib,不要尝试重新实现解压缩。