1

重複の可能性:
iPhoneでgzipファイルを解凍して非圧縮ファイルに書き出す方法

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 データベース ファイルでは機能しますが、sqlite データベースを gzip した場合は機能しません。その後、「zipファイルを開けません」というエラーが返されるたびに。

次に、 https://github.com/nicklockwood/GZIPGZIPからこのアプローチを試しました。私はそのようなコードを使用しました:

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]; 

その後、ドキュメントフォルダーに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;
}

しかし、これもファイルを開くことができません。

誰かが私を助けることができますか?

4

1 に答える 1

1

Xcode のリンカー設定でターゲットに追加できる zlib ライブラリの使用があります。

ここでは、zlib の使用方法の例を見つけることができます。http://zlib.net/zlib_how.html

于 2012-10-24T11:34:48.393 に答える