2011-07-07 62 views
0

unzOpen()函數給出了錯誤「水溼打開」打開在一個zip文件,客觀拉鍊庫閱讀Zip文件給出了objectice-ZIP庫中的錯誤在iphone

我嘗試以下時間: - 其中,路徑爲壓縮文件的有效路徑具有讀/寫過量

  • (ID)initWithFileName:(的NSString *)文件名模式:(ZipFileMode)模式 { 如果(個體= [超級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

回答

1

我在我的應用程序和一個有同樣的問題,經過長期研究和花了幾天我才知道問題出在服務器端,而zip文件在服務器端沒有正確存檔。所以我建議你先檢查一下zip文件是否正確。先嚐試從Mac中解壓縮本地zip文件,並確保zip文件格式正確存檔。

希望得到這個幫助。

+0

感謝Reply.I已經檢查出壓縮文件被正確存檔我成功郵編及解壓縮該數據庫文件沒有程序 – Piyush

+1

你得到與zip文件的問題? – Deeps

+0

@Piyush你是如何解決它的? – Samidjo

1

我知道這個話題已經超過3年了,但也許我的回答對其他人有用。

我有同樣的問題。 問題出在iOS 7.1上的64位體系結構上。

首先,檢查你是否有1.1版本的MiniZip。 不要複製Zlib目錄與adler32.c,compress.c ..等文件。 改爲使用由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]; 
+0

嘿那裏 - 你在哪裏得到了Minizip 1.1,你如何使用「由Xcode給出的」庫? – DiscDev

+0

Minizip 1.1 http://www.winimage.com/zLibDll/minizip.html 如何添加libs.1.2.5.dylib做你的項目? 構建階段 - >使用庫鏈接二進制 - > + - > libz.1.2.5.dylib – TobiaszParys