【问】如何查找Zip包内部文件内容?

VBAHZ 2006-03-10 05:11:23
比如我想把aaa.zip中含有字符串abc的文件列出来,
由于压缩包里文件可能众多,所以要有实时进度显示,还要能中断。

请问,该如何做?

不想使用第三方控件,除非是纯动态库。
...全文
1031 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
VBAHZ 2006-07-06
  • 打赏
  • 举报
回复
GZ
VBAHZ 2006-06-17
  • 打赏
  • 举报
回复
若若的问一句,老大,这是不是查找文件二进制内容的呢?

northwolves 2006-06-17
  • 打赏
  • 举报
回复
http://www.mikekohn.net/kunzip.php
northwolves 2006-06-17
  • 打赏
  • 举报
回复
http://www.codeguru.com/vb/gen/vb_graphics/fileformats/article.php/c6743
VBAHZ 2006-06-17
  • 打赏
  • 举报
回复
VBAHZ 2006-03-19
  • 打赏
  • 举报
回复
实际上我猜测,就Rar的搜索方式,可能是根据实际的Rar包的特性,直接把要搜索的字符转为压缩后的特征码,这样,就可以直接在一个压缩包里对比二进制数据了,找到后再把此段数据所属的源文件索引列出,而不需要真的去解码,
是解码N个文件快呢,还是压缩一串字符快呢?
这就是根本区别,速度当然快了N倍啦

我不是不会解压Zip包,本主题就是希望能找到类似Rar的快速搜索方式。

不知道有没有?
(之所以不用Rar包是有原因的,请不用提它了,但Rar的方式可以借鉴)
VBAHZ 2006-03-19
  • 打赏
  • 举报
回复
这样也太慢了吧?有人试过Rar吗?
它的搜索好像不是打开包的吧?
用的应该是专门的算法,在万条文件里搜索字符仅用了5秒钟(结果有200多条),
实践对比,即使在不压缩的情况下,用读取文件的办法也达不到这个速度的,
所以只可能在压缩包里用算法才更快(指没有二次压缩的文本文件)因为它只把压缩包当成一个文件看。
难道,Zip包就没有这个查找包内数据的功能了吗?

实际上,我有过一次教训,有一个10M左右的Rar包(8千多个文本文件),压缩用了4分多钟,
而纯释放竟然要用5分多钟,晕了,解开后再去搜的话又不知要用N分钟了,然后还要删除临时文件,忒麻烦了,而就是这个包,Dos版的Rar仅用了5秒钟就搜索完毕了,
还有谁怀疑它是用释放后搜索的?

Zip包应该比Rar包的算法速度上快一点吧?但要是全部解开后再找,那。。。

死Rar 就是不支持Zip包(DOS版)讨厌
kmlxk0 2006-03-19
  • 打赏
  • 举报
回复
学习。。。

LZ把WinRAR逆向工程看看嘛 :P
of123 2006-03-17
  • 打赏
  • 举报
回复
另,不需要安装 Winzip,将 Wzunzip.exe 命令行程序打包到安装文件中,通过 Shell 函数调用就可以解压了。

下载地址:http://www.winzip.com/downcl.htm
of123 2006-03-17
  • 打赏
  • 举报
回复
实际上,需要解压成临时文件,在其中搜索,然后删除临时文件。

你可以在循环过程中,对临时文件逐段搜索(利用 Instr 函数),这样就可以显示进度和接受中断(通过 DoEvents)。
绝缘 2006-03-17
  • 打赏
  • 举报
回复
安装WinZIP后,安装目录就有一个动态连接库,是用来查看和解压文件的.XP以上的系统自身也带有解压ZIP文件的动态库,应该可以利用

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧