我正在开发一个iOS应用程序,并尝试压缩我在应用程序中创建的文件,是否有任何内置函数能够执行此操作?
我绝对推荐Objective-Zip.它刚刚转移到https://github.com/flyingdolphinstudio/Objective-Zip:
他们的文档中的一些例子:
创建Zip文件:
ZipFile *zipFile= [[ZipFile alloc] initWithFileName:@"test.zip" mode:ZipFileModeCreate];
将文件添加到zip文件:
ZipWriteStream *stream= [zipFile writeFileInZipWithName:@"abc.txt" compressionLevel:ZipCompressionLevelBest]; [stream writeData:abcData]; [stream finishedWriting];
从zip文件中读取文件:
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:@"test.zip" mode:ZipFileModeUnzip]; [unzipFile goToFirstFileInZip]; ZipReadStream *read= [unzipFile readCurrentFileInZip]; NSMutableData *data= [[NSMutableData alloc] initWithLength:256]; int bytesRead= [read readDataWithBuffer:data]; [read finishedReading];
正如Alex指出的那样,我通过指出由Cocoadev wiki用户贡献的NSData类别来回答这个问题.该类别包括在NSData实例中处理zipped和gzip数据的方法(可以从Zip文件读取或写入一个).只要您可以将文件数据提供给NSData实例,这应该是实现您描述的文件压缩所需的全部内容.
有关此类别的示例,请参阅我的iPhone应用程序Molecules的源代码.我只使用该方法从gzip压缩文件中提取数据(在SLSMolecule + PDB.m中),但您应该能够从中获取基本概念.