[问题] iOS解压缩问题

楼主: kissmickey (无言)   2014-06-19 16:03:49
目前使用的解压缩方法有
ZipArchive、Objective-Zip、SSZipArchive
解压缩含有3层以上的资料 原始档总共加起来192个, 45 MB
第一层有放资料 1资料夹 8x个档案
第二层4个资料夹
第三层每个资料夹都有内容 声音 图片
问题1.
3种方式都一样遇到
解压缩完,会出现第一层资料OK、第二层只读到1个或2个资料夹
第三层只读到一个资料夹的1个档,其他的都没读到
objective-zip 有出现错误讯息:
The operation couldn't be completed. (Cocoa error 512.)
如果只是单纯把那4个资料夹的东西压缩解压缩,是ok的
问题2.
win7 上的压缩档放到ios上,解压缩会出现上面的情况
在mac上制作的zip 放到ios 完全解压缩不出来!!?
使用Objective-zip部分程式码
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentPath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; // 原文件
NSString *zipFilePath = [documentPath stringByAppendingString:@"/XXX.zip"]; // 目的文件
NSString *dataPath = [documentPath stringByAppendingString:@"/IDF"];
ZipFile *zipFile = [[ZipFile alloc] initWithFileName:zipFilePath mode:ZipFileModeUnzip];
[zipFile goToFirstFileInZip];
BOOL continueReading = YES;
while (continueReading)
{
//读取文件信息
FileInZipInfo *info = [zipFile getCurrentFileInZipInfo];
//丢入buffer
ZipReadStream *stream = [zipFile readCurrentFileInZip];
//[stream finishedReading];
NSMutableData *data = [[NSMutableData alloc] initWithLength:info.length];
[stream readDataWithBuffer:data];
//存入文件
NSString *writePath = [dataPath stringByAppendingPathComponent:info.name];
NSError *error = nil;
[data writeToFile:writePath options:NSDataWritingAtomic error:&error];
if (error) {
NSLog(@"Error unzipping file: %@",[error localizedDescription]);
}
//清理
[stream finishedReading];
[data release];
//继续读取
continueReading = [zipFile goToNextFileInZip];
}
[zipFile close];
有人遇到跟我一样的问题吗? 求解
作者: benjenq (Ben(憋))   2014-06-20 00:41:00
ZipArchive正常,但是不支援中文
楼主: kissmickey (无言)   2014-06-20 00:50:00
ZipArchive可以中文喔 只是问题1还是一样发生
作者: Blueshiva (龙野南云)   2014-06-20 14:26:00
Zip碰到中文要小心档名/目录名编码的问题,虽然不确定有没有相关,但可以试试
楼主: kissmickey (无言)   2014-06-22 18:16:00
已解出来 是中文问题,以上三种都可以使用繁中

Links booklink

Contact Us: admin [ a t ] ucptt.com