使用zlib解压缩zip文件会在IOS中永久返回错误

时间:2012-12-14 04:13:03

标签: objective-c zlib

我与iOS合作,我想使用zlib将.zip文件解压缩到内存,但它总是返回代码-3的错误。

我的代码如下:

NSData *sData = [[NSFileManager defaultManager] contentsAtPath:[[NSBundle mainBundle] pathForResource:@"mactxt" ofType:@"zip"]];
NSData *srcData = [[NSFileManager defaultManager] contentsAtPath:[[NSBundle mainBundle] pathForResource:@"mactxt" ofType:@"rtf"]];
unsigned int l = srcData.length;
unsigned long srcLen = sData.length;

unsigned long dstLen = l;
void * dest =malloc(dstLen);
memset(dest, 0x00, dstLen);
const void * src =[sData bytes];
int a = uncompress(dest, &dstLen, src, srcLen);
if (a==0) {
    NSData *data = [[NSData alloc] initWithBytes:dest length:dstLen];
    [data writeToFile:[self dataFilePath:@"matxt.rtf"] atomically:YES];
}

我该如何解决?

1 个答案:

答案 0 :(得分:0)

它失败了,因为它的格式错误。 .zip档案不是用zlib压缩的 - 他们使用PKZIP,这是一种有点复杂的档案格式,通常包含多个文件,而不仅仅是一个数据流。