在 iOS 中,解压缩也是比较重要的,可以用来做文件管理 App,可以像 QQ 一样,把皮肤文件压缩起来(因为里面包含很多图片和字体等),用的时候解压就可以了。

可以使用第三方框架 - ZipArchive,下载地址:https://github.com/ZipArchive/ZipArchive,其 README.md 有介绍如何导入项目,如果是使用 CocoaPods 或者 Carthage 就很方便了,如果是手动拖源代码进入项目,还要引入 libz.tbd 框架:

Link libz.tbd

用法:

1
2
3
4
5
// Create
[SSZipArchive createZipFileAtPath: zipPath withContentsOfDirectory: sampleDataPath];
// Unzip
[SSZipArchive unzipFileAtPath:zipPath toDestination: unzipPath];

压缩

zip

ZipArchive 提供了几个压缩的方法,最简单的使用如下:

1
2
3
4
5
6
7
8
9
10
11
- (void)zip {
// 以下文件将会被压缩起来(模拟沙盒)
NSArray *paths = @[
@"/Users/apple/Desktop/1.jpg",
@"/Users/apple/Desktop/2.jpg",
@"/Users/apple/Desktop/3.jpg",
];
// 将 paths 的文件压缩到 Archive.zip 里面
[SSZipArchive createZipFileAtPath:@"/Users/apple/Desktop/Archive.zip" withFilesAtPaths:paths];
}

zip files

解压

unzip

将上面的 Archive.zip 解压,最简单的方法是:

1
2
3
- (void)unzip {
[SSZipArchive unzipFileAtPath:@"/Users/apple/Desktop/Archive.zip" toDestination:@"/Users/apple/Desktop/ArchiveFolder"];
}

unzip files