iOS解压缩.gz文件

时间:2012-10-24 08:58:17

标签: objective-c ios gzip ziparchive

  

可能重复:
  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;
}

但这也无法打开文件。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

使用zlib库可以在Xcode的链接器设置中添加到目标。

在这里您可以找到有关如何使用zlib的示例。 http://zlib.net/zlib_how.html