看板 MacDev 關於我們 聯絡資訊
目前使用的解壓縮方法有 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]; 有人遇到跟我一樣的問題嗎? 求解 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.134.26.195 ※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1403165032.A.C79.html
benjenq:ZipArchive正常,但是不支援中文 06/20 00:41
kissmickey:ZipArchive可以中文喔 只是問題1還是一樣發生 06/20 00:50
Blueshiva:Zip碰到中文要小心檔名/目錄名編碼的問題,雖然不確定有 06/20 14:26
Blueshiva:沒有相關,但可以試試 06/20 14:26
kissmickey:已解出來 是中文問題,以上三種都可以使用繁中 06/22 18:16