【发布时间】:2012-10-24 08:58:17
【问题描述】:
可能重复:
How to uncompress a gzip file and write that out to an uncompressed file, on iPhone
我试图在 iOS 中解压缩一个 .gz sqlite 文件,但直到现在我还没有找到一个好的库。
我试过这样SSZipArchive:
path = [[NSBundle bundleForClass:[self class]] pathForResource:@"test.sqlite" ofType:@"gz"];
NSString *documentsDir = (NSString *)[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
destination = documentsDir;
NSError *error;
BOOL success = [SSZipArchive unzipFileAtPath:path toDestination:destination overwrite:YES password:nil error: &error];
这适用于压缩的 sqlite 数据库文件,但如果我 gzip 压缩 sqlite 数据库则不行。然后每次返回错误“无法打开 zip 文件”。
然后我从https://github.com/nicklockwood/GZIP 尝试了这种GZIP 方法。
我使用了这样的代码:
path = [[NSBundle bundleForClass:[self class]] pathForResource:@"test.sqlite" ofType:@"gz"];
NSString *documentsDir = (NSString *)[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
destination = [documentsDir stringByAppendingPathComponent:@"test.sqlite"];
NSData *gzData = [NSData dataWithContentsOfFile:path];
NSData *ungzippedData = [gzData gunzippedData];
return [ungzippedData writeToFile:destination atomically:YES];
之后,我在我的 Documents 文件夹中获得了一个名为 test.sqlite 的文件,但如果我尝试打开它,它会失败,因为失败已损坏。
我最后一次尝试是来自http://code.google.com/p/ziparchive/ 的ZipArchive。
我是这样用的:
ZipArchive* za = [[ZipArchive alloc] init];
if( [za UnzipOpenFile:path] ){
BOOL success = [za UnzipFileTo:destination overWrite:YES];
[za UnzipCloseFile];
return success;
}
但这也无法打开文件。
有人可以帮我吗?
【问题讨论】:
-
你好安迪,我在我的应用程序中遇到了同样的问题。你解决了这个问题吗?
标签: objective-c ios gzip ziparchive