2010-11-21 63 views
0

目標C中是否有任何庫可用於壓縮整個文件夾(並對其進行解壓縮)?我已經看了其中的一些通過搜索,但他們看起來像他們需要單獨添加文件,其中一些據稱崩潰......在目標C中壓縮文件夾C

它看起來像這樣的庫可能工作: http://bitbucket.org/dchest/osxzip/overview

我不知道但是,如果它支持文件夾。任何人都知道它是否有支持壓縮文件夾的其他庫?即使與命令行libz交互示例代碼將與我很好......

回答

1

您可以使用NSTask運行命令行ditto程序。請務必查看ditto手冊頁,瞭解正確的標誌組合以獲得與Finder兼容的壓縮。

+0

感謝您的鏈接 - 不知道同上可以壓縮文件夾。看了幾件事後,我可能最終想要使用命令行,因爲我目前正在決定是否使用Qt(對於跨平臺,在這種情況下,我將在Windows上通過命令行和同上使用7-zip在Mac上)或目標C現在... – 2010-11-21 06:31:19

1

根據這個例子:http://www.raywenderlich.com/1948/how-integrate-itunes-file-sharing-with-your-ios-app你可以得到一個NSData對象與拉鍊數據,然後只是把它寫[數據將writeToFile ....]

- (NSData *)exportToNSData { 
    NSError *error; 
    NSURL *url = [NSURL fileURLWithPath:_docPath]; 
    NSFileWrapper *dirWrapper = [[[NSFileWrapper alloc] initWithURL:url options:0 error:&error] autorelease]; 
    if (dirWrapper == nil) { 
     NSLog(@"Error creating directory wrapper: %@", error.localizedDescription); 
     return nil; 
    } 

    NSData *dirData = [dirWrapper serializedRepresentation]; 
    NSData *gzData = [dirData gzipDeflate];  
    return gzData; 
} 
+0

感謝您的信息,但它是完全可能的,我壓縮的目錄有大量的文件(10K +),超過200MB,所以我不確定是否將是最好的方法(如果它將其壓縮到RAM中)。如果我有這麼多文件,這會受到限制嗎? (順便說一句,我不是那個提出了目錄結構和整個10K文件的東西:P) – 2010-11-21 17:35:58

+0

我真的不知道......我只用它的Mac OS X從來沒有在iPhone上......但我認爲它應該工作。 – Staeff 2010-11-21 17:42:25

+1

挑剔的是,當人們談論「壓縮」事物時,通常意味着PKZip格式,這可能與您的代碼示例不同。 – JWWalker 2010-11-21 21:46:10