unzOpen()函数在使用objective-zip库打开zip文件时出现“无法打开”错误
我尝试了以下操作: - 其中路径是具有读/写多余的zip文件的有效路径
(id)initWithFileName:(NSString *)fileName mode:(ZipFileMode)mode { if(self = [super init]) { _fileName = [fileName retain]; _mode = mode;
switch (mode) {
case ZipFileModeUnzip:
_unzFile = unzOpen( (const char*)[_fileName UTF8String] );
if (_unzFile == NULL) {
NSString *reason= [NSString stringWithFormat:@"Can't open '%@'", _fileName];
@throw [[[ZipException alloc] initWithReason:reason] autorelease];
}
break;
case ZipFileModeCreate:
_zipFile= zipOpen([_fileName cStringUsingEncoding:NSUTF8StringEncoding], APPEND_STATUS_CREATE);
if (_zipFile == NULL) {
NSString *reason= [NSString stringWithFormat:@"Can't open '%@'", _fileName];
@throw [[[ZipException alloc] initWithReason:reason] autorelease];
}
break;
case ZipFileModeAppend:
_zipFile= zipOpen([_fileName cStringUsingEncoding:NSUTF8StringEncoding], APPEND_STATUS_ADDINZIP);
if (_zipFile == NULL) {
NSString *reason= [NSString stringWithFormat:@"Can't open '%@'", _fileName];
@throw [[[ZipException alloc] initWithReason:reason] autorelease];
}
break;
default: {
NSString *reason= [NSString stringWithFormat:@"Unknown mode %d", _mode];
@throw [[[ZipException alloc] initWithReason:reason] autorelease];
}
}
}
回归自我; }
它给出错误无法打开文件 任何可以提供帮助请提前致谢
其中mode是ZipFileModeUnzip
答案 0 :(得分:1)
我在我的一个应用程序中遇到了同样的问题,经过长时间的研究,花了几天时间才知道问题出在服务器端,而zip文件在服务器端没有正确存档。所以我建议你先检查一下zip文件是否合适。尝试首先从Mac解压缩本地zip文件,并确保zip文件格式已正确存档。
希望得到这个帮助。
答案 1 :(得分:1)
我知道这个话题超过3年,但也许我的回答对其他人有用。
我有同样的问题。 问题出在iOS 7.1上的64位架构上
首先,检查你有1.1版MiniZip。 不要使用adler32.c,compress.c ..等文件复制Zlib目录。 使用Xcode libs.1.2.5.dylib提供的库。
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:zipFilePath mode:ZipFileModeUnzip];
[unzipFile locateFileInZip:fileName];
FileInZipInfo *fileInfo = [unzipFile getCurrentFileInZipInfo];
ZipReadStream *read;
if(password){
read = [unzipFile readCurrentFileInZipWithPassword:password];
} else {
read = [unzipFile readCurrentFileInZip];
}
NSMutableData *data= [[NSMutableData alloc] initWithLength:[fileInfo length]];
[read readDataWithBuffer:data];
[read finishedReading];
[unzipFile close];