ZipZap是Mac OS X和iOS的zip文件I/O库。
zip文件是复合Objective-C文档的理想容器。zip文件被广泛使用且易于理解。您可以随机访问它们的各个部分。该格式压缩效果良好,并且具有广泛的操作系统和工具支持。因此,我们希望将该格式变得更加易用。因此,该库具有以下特征
作为一个独立的项目
git clone https://github.com/pixelglow/ZipZap.git
。作为一个集成到您自己的工作空间中的项目
cd workspace
,然后运行git submodule add https://github.com/pixelglow/ZipZap.git
。头文件包含
#import <ZipZap/ZipZap.h>
读取现有的zip文件
ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"]
error:nil];
ZZArchiveEntry* firstArchiveEntry = oldArchive.entries[0];
NSLog(@"The first entry's uncompressed size is %lu bytes.", (unsigned long)firstArchiveEntry.uncompressedSize);
NSLog(@"The first entry's data is: %@.", [firstArchiveEntry newDataWithError:nil]);
写入新的zip文件
ZZArchive* newArchive = [[ZZArchive alloc] initWithURL:[NSURL fileURLWithPath:@"/tmp/new.zip"]
options:@{ZZOpenOptionsCreateIfMissingKey : @YES}
error:nil];
[newArchive updateEntries:
@[
[ZZArchiveEntry archiveEntryWithFileName:@"first.text"
compress:YES
dataBlock:^(NSError** error)
{
return [@"hello, world" dataUsingEncoding:NSUTF8StringEncoding];
}]
]
error:nil];
更新现有的zip文件
ZZArchive* oldArchive = [ZZArchive archiveWithURL:[NSURL fileURLWithPath:@"/tmp/old.zip"]
error:nil];
[oldArchive updateEntries:
[oldArchive.entries arrayByAddingObject:
[ZZArchiveEntry archiveEntryWithFileName:@"second.text"
compress:YES
dataBlock:^(NSError** error)
{
return [@"bye, world" dataUsingEncoding:NSUTF8StringEncoding];
}]]
error:nil];
高级使用:食谱
API参考:参考
ZipZap 使用 BSD 许可证。