CNode

不解压压缩包,是否能遍历读取或者计算里边的文件的MD5?

问答
Bbi-kai发布于8 年前最后回复8 年前13 回复6204 浏览0 收藏

处理压缩包,不解压的情况下,是否能遍历里边的文件,比如做读取或者md5计算,就像解压后的一样? 是否有这样的模块呢?

查看回复

回复 (13)

F
fruit-memory#1·8 年前

你能不解压就读取里面的文件?

M
myy#2·8 年前

首先无论如何,还是得解压才能计算的。如果你了解压缩包结构以及的解压过程,就可以做到。 压缩包有一定的格式,遍历文件肯定没问题。 正常解压每个文件时,都是分块的流式操作,把 解压块写入文件,换成分块计算MD5就可以了。

B
bi-kai#3·8 年前

@fruit-memory 我有非常多的zip和jar,想用代码实现beyondcompare的功能,做不同版本软件包的差分,如果可以不解压性能就能比较高。

B
bi-kai#4·8 年前

@myy 到现在确实没找到能像操作解压后 的文件一样操作未解压的zip包的。 我只是担心zip和jar都解压、用完再删除,会有大量io,导致在win下整体性能低好多。 不知道beyondcompare是如何处理压缩包的,能达到那种速度就是最理想的状态了。

M
MiYogurt#6·8 年前

干嘛不直接对比 zip 的 md5

M
myy#7·8 年前
引用 MiYogurt干嘛不直接对比 zip 的 md5

@MiYogurt 同样的文件,每次打的zip包不是完全相同的。

M
myy#8·8 年前
B
bi-kai#9·8 年前

@myy 是的,java就有,所以我就想在node中找找 -_-

B
bi-kai#10·8 年前

@MiYogurt maven打包,会加入时间戳

B
bi-kai#11·8 年前

@dislido 有模块可以支持么?还是用原生api?

V
vendar#12·8 年前

unzip -l

来自✨ Node.js开源项目精选

B
bi-kai#13·8 年前

发现了adm-zip,不解压直接可以读取文件,可以在内存里缓存,实测不限于zip,还支持tar、jar等文件。

对于jar,测试中还是发现了点问题: 用该模块api读取文件和解压后用fs读文件,计算的md5不一致(zip文件没这问题),不知道是不是默认用zip格式缓存到内存的,仍在验证中。

参与回复
登录后即可参与回复。登录