http://pan.baidu.com/s/1bn6e6bP
unzip的vs2008工程源码我打包在上面的网盘里,\unzip1\unzip文件夹下的a.zip是我的原始压缩文件,这个文件用这段代码解压不出来,我把a.zip用解压软件解压再压缩成q.zip后,q.zip可以用这段代码解压,不知道a.zip为什么不能解压?我用unrar.exe命令解压也提示a.zip不是标准的压缩文件,但是现成的解压软件可以正常解压。
unzip.cpp文件里最后一段代码可以改压缩文件的路径。
void main()
{
HZIP hz = OpenZip(_T("q.zip"),0);
ZIPENTRY ze;
GetZipItem(hz,-1,&ze);
int numitems=ze.index;
for (int i=0; i<numitems; i++)
{
GetZipItem(hz,i,&ze);
UnzipItem(hz,i,ze.name);
}
CloseZip(hz);
}
------解决思路----------------------
这个a.zip就不是zip文件,而是gzip文件,当成zip文件当然解压不了。一般现成的解压软件的容错能力很好,不会光看扩展名判断格式,而是会自动检查所有支持的格式,所以能解压。
如果你用16进制编辑器打开,就能看到,zip文件是504B也就是'PK'开头的,而gzip文件是1F8B开头的。