ZipZap是一個適用於 iOS、macOS 和 tvOS 的 zip 檔案 I/O 函式庫。
zip 檔案是複合 Objective-C 文件的理想容器。 Zip 檔案被廣泛使用且易於理解。您可以隨機存取他們的部分。該格式壓縮得很好,並且具有廣泛的作業系統和工具支援。因此,我們希望使這種格式成為您更輕鬆的選擇。因此,該庫具有以下特點:
易於使用的介面:公共 API 僅提供兩個類別!不過,您可以使用熟悉的NSArray集合和屬性來查看 zip 檔案。您可以透過熟悉的NSData 、 NSStream和 Image I/O 類別來壓縮、解壓縮和重新壓縮 zip 檔案。
高效實施:我們優化了 zip 檔案的讀取和寫入,以減少虛擬記憶體壓力和磁碟檔案抖動。根據複合文件的組織方式,更新單一條目可能比將相同資料寫入單獨的文件更快。
檔案格式相容性:由於ZipZap嚴格遵循 zip 檔案格式規範,因此它可以與大多數 Mac、Linux 和 Windows zip 工具搭配使用。
作為一個獨立項目:
在終端機中,執行git clone https://github.com/pixelglow/ZipZap.git
。
在ZipZap目錄中,開啟ZipZap.xcodeproj Xcode 專案。
在 Xcode 專案中,從下拉清單中選擇ZipZap (iOS Framework) 、 ZipZap (iOS Static Library) 、 ZipZap (macOS Framework) 、 ZipZap (macOS Static Library) 、 ZipZap (tvOS Framework)或ZipZap (macOS Static Library) 、 ZipZap (tvOS Framework)或ZipZap (tvOS Static Library)下。
現在您可以使用所選方案進行建置、測試(僅限 macOS)或分析。
建置的庫和測試案例位於~/Library/Developer/Xcode/DerivedData的子目錄中。
作為與您自己的工作區整合的專案:
在終端機中,運行cd workspace
然後git submodule add https://github.com/pixelglow/ZipZap.git
。
在 Xcode 工作區中,選擇「檔案」>「將檔案新增至「工作區」」選單項,然後在ZipZap目錄中選擇ZipZap.xcodeproj Xcode 項目。
在任何將使用ZipZap的專案目標中:
在Build Phases > Link Binary With Libraries中,加入對應的libZipZap.a以及下面的 Require Link 部分中列出的任何其他函式庫。
在「建置設定」>「搜尋路徑」>「標頭搜尋路徑」下,新增../ZipZap 。
現在您可以建立、測試或分析這些專案目標。
標頭包括:
#import
讀取現有的 zip 檔案:
ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"]error:nil]; ZZArchiveEntry* firstArchiveEntry = oldArchive.entries[0];NSLog(@"第一個條目的未壓縮大小為%lu 位元組。", (unsigned long)firstArchiveEntry.uncompressedSize);NSLog(@"第一個條目的資料資料為: %@。 " , [firstArchiveEntry newDataWithError:nil]);
寫入新的 zip 檔案:
ZZArchive* newArchive = [[ZZArchive alloc] initWithURL:[NSURL fileURLWithPath:@"/tmp/new.zip"] 選項:@{ZZOpenOptionsCreateIfMissingKey : @YES} 錯誤:nil]; [新存檔更新項目:@[ [ZZArchiveEntry archiveEntryWithFileName:@"first.text" 壓縮:YESdataBlock:^(NSError** 錯誤) { return [@"hello, world" dataUsingEncoding:NSUTF8StringEncoding]; }] ]錯誤:無];
更新現有的 zip 檔:
ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"]error:nil]; [舊存檔更新項目: [oldArchive.entries arrayByAddingObject: [ZZArchiveEntry archiveEntryWithFileName:@"second.text" 壓縮:YES dataBlock:^(NSError** 錯誤) { return [@"再見,世界" dataUsingEncoding:NSUTF8StringEncoding]; }]]錯誤:無];
進階用途:食譜
API 參考: 參考
建置:Xcode 7 及更高版本。
連結:僅限系統函式庫;不需要第三方函式庫。
ApplicationServices.framework (macOS) 或ImageIO.framework (iOS、tvOS)
基礎框架
libz.dylib
運行:macOS 10.11 (El Capitan)、iOS 9.3 或 tvOS 9.2 及更高版本。
在 Twitter 上關注我們:@pixelglow。
提出有關 ZipZap 問題的問題。
ZipZap已獲得 BSD 授權許可。
使用 ChangeTip 進行提示。