在 iOS 开发里,我们常遇到的压缩文件多是以 .zip 作为后缀的,但是在这次项目里我们通过 url 下载地图离线包,得到的文件为 .gz 后缀.这里 简单说说 .zip 和 .gz 文件的区别: 其实这两个压缩文件里面包含的内容是一样的,只是压缩格式不一样,tar.gz格式的文件比zip文件要小不少。tar.gz压缩格式用于unix的操作系统,而zip用于windows的操作系统,但在windows系统中WinRar工具同样可以解压缩tar.gz格式的。
回归正题,我的求解之路. 通过一番求助, 我找到了这份资料 https://github.com/nvh/NVHTarGzip .下载下来,好好运行理解吧.
示例:
//压缩文件路径
NSString *sourceFilePath = @"/Users/wangxiao/Desktop/yasuo/cjmsa_wh.gz";
//[self demoDestinationUnGzipPath]
[[NVHTarGzip sharedInstance] unGzipFileAtPath:sourceFilePath
toPath:self.demoDestinationUnGzipPath
completion:^(NSError *error)
{
NSLog(@"error=%@",error);
}];
//解压到这里
- (NSString*)demoDestinationUnGzipPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentPath = paths[0];
NSString* destinationPath = [documentPath stringByAppendingPathComponent:@"cjmsa_wh"];
return destinationPath;
}
+ (NVHTarGzip *)sharedInstance {
static dispatch_once_t onceToken;
static NVHTarGzip *tarGzip;
dispatch_once(&onceToken, ^{
tarGzip = [NVHTarGzip new];
});
return tarGzip;
}
简单来说,通过上面三步,变完成了对 .gz 文件的解压.