objective-zip解压带密码的文件

话说在iOS想做个zip解压功能的选择可真多:ZipArchive,ssziparchive,objective-zip。早先的时候就用过ZipArchive还不错,简单粗暴,支持带密码保护的压缩及解压,但是这次我的需要是加密压缩,而且数据量较大,在解压的时候最好能实时解压指定的文件。这么一来objective-zip就是不二的选择了。
objective-zip虽说支持密码方式的压缩和解压,但是有一个问题,它压缩的文件,自己竟然解压不了!系统的命令行的unzip命令也解压不了,通过一个牛掰的软件像better-zip啥的倒时可以。遇到的错误就是:

*** Terminating app due to uncaught exception 'ZipException', reason: 'Error in opening current file in '/Path/to/Archive.zip''
*** First throw call stack:
(0x1722012 0x1107e7e 0x23303 0x2bce 0x98805 0x98764 0x9006e5b7 0x90058d4e)
libc++abi.dylib: terminate called throwing an exception

用到的代码是:

ZipReadStream *_readFile = [_unzipFile readCurrentFileInZipWithPassword:@"111111"];

这个问题困扰了我挺长时间,也通过代码跳转过去研究过。但是终究没找到问题的根节所在,于是不断的google之下,功夫不负有心人,找到了解决办法:
unzip.c Line 72:

#ifndef NOUNCRYPT
    //#define NOUNCRYPT Comment this line, so unzip protected files will be enabled
#endif

在unzip.c找到“#define NOUNCRYPT”直接注释之。
然后就是ok了。哎。

参考资料:
How to use unzOpenCurrentFilePassword?


相关博文

    分享到:

About rainbird

IOS攻城狮
This entry was posted in IOS开发, object-c and tagged , , , , . Bookmark the permalink.

发表评论