2011-03-22 67 views
11

我想延長了應用下載的zip文件到 子目錄然後提取它,然後加載哪個人的zip內的圖像我的iPhone應用程序在主束子目錄中提取。iPhone:下載的zip並在運行時

任何想法如何解壓在運行時間和訪問的圖像?對於某個想法會很開心。

問候,

+0

主束是隻讀的。你不能提取文件,但是你可以使用文件目錄等本地目錄。 – 2015-05-26 21:33:50

回答

9

你不能提取到你的包。使用[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]獲取可寫入目錄的路徑。

您可以使用代碼http://code.google.com/p/ziparchive/從zip存檔提取文件。

+0

我可以使用Ziparchive for ios 6 – 2012-10-12 12:22:54

20

我用ZipArchive在過去的成功。

這是相當ligyweight和使用簡單,支持密碼保護,ZIP中的多個文件,以及壓縮&解壓縮。

的基本用法是:

NSString *filepath = [[NSBundle mainBundle] pathForResource:@"ZipFileName" ofType:@"zip"]; 
ZipArchive *zipArchive = [[ZipArchive alloc] init]; 
[zipArchive UnzipOpenFile:filepath Password:@"xxxxxx"]; 
[zipArchive UnzipFileTo:{pathToDirectory} overWrite:YES]; 
[zipArchive UnzipCloseFile]; 
[zipArchive release]; 
+0

如何檢查文件是否受密碼保護,是否支持 – AMH 2011-09-13 11:12:50

+1

這是基於obj的C++,我可以得到Obj C版本,這樣我就不必使用OBJ C++編譯器? – Satyam 2012-03-26 12:25:17

+0

@Rog我可以使用ZipArchive進行ios 6 – 2012-10-12 12:23:27

3

如果添加ZipArchive到您的項目,記得還添加了框架。 正確的框架是libz.dylib最新版本(Xcode 4.2)是1.2.5

(添加框架,從而與您的目標的構建階段標籤庫的部分。)

2

我建議你使用ssziparchive bcoz它同時支持ARCNon ARC項目。

  1. 添加SSZipArchive.hSSZipArchive.mminizip到您的項目。
  2. 最新版本的libz(現在它libz1.2.5)庫添加到您的目標。

對於ARC,您不需要做任何事情。 SSZipArchive會,如果你不使用ARC檢測並添加所需的內存管理代碼。

和代碼將是這樣的:

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 

    // Unzipping 

    //If your zip is in document directory than use this code 
    NSString *zipPath = [documentsDirectory stringByAppendingPathComponent:@"mediadata.zip"]; 
    //else if zip file is in bundle than use this code 
    NSString *zipPath = [[NSBundle mainBundle] pathForResource:@"mediadata" ofType:@"zip"]; 

    NSString *destinationPath = [documentsDirectory stringByAppendingPathComponent:@"MediaData"]; 


    if([SSZipArchive unzipFileAtPath:zipPath toDestination:destinationPath] != NO) { 
     //unzip data success 
     //do something 
     NSLog(@"Dilip Success"); 
    }else{ 
     NSLog(@"Dilip Error"); 
    } 
+0

好的答案真的很有幫助,thanx +1 – 2013-09-02 12:46:23

+0

如果服務器中的「.zip」文件,如何使用SSZipArchive庫。請讓我們知道 – 2015-02-19 13:00:29

+0

@JoshKethepalli在這種情況下,你必須首先在本地下載ZIP文件並解壓縮它,如果沒有原始ZIP文件在本地存儲中,你無法解壓縮它。 – Dilip 2015-02-20 05:47:32