确实坚持尝试编写代码来解压缩iPhone上的文件或目录。

以下是一些用于尝试解压缩简单文本文件的示例代码。

它解压缩该文件,但它已损坏。

(void)loadView {

    NSString *DOCUMENTS_FOLDER = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *path = [DOCUMENTS_FOLDER stringByAppendingPathComponent:@"sample.zip"];

    NSString *unzipeddest = [DOCUMENTS_FOLDER stringByAppendingPathComponent:@"test.txt"];

    gzFile file = gzopen([path UTF8String], "rb");

    FILE *dest = fopen([unzipeddest UTF8String], "w");

    unsigned char buffer[CHUNK];

    int uncompressedLength = gzread(file, buffer, CHUNK);

    if(fwrite(buffer, 1, uncompressedLength, dest) != uncompressedLength ||     ferror(dest)) {
        NSLog(@"error writing data");
    }
    else{

    }

    fclose(dest);
    gzclose(file);
}

最佳答案

使用gZip确实创建了“sample.zip”吗? .zip扩展名通常用于WinZip创建的存档。也可以使用zLib解压缩这些文件,但是您必须解析 header 并使用其他例程。

要检查,请查看文件的前两个字节。如果是'PK',则是WinZip,如果是0x1F8B,则是gZip。

因为这是特定于iPhone的,所以请看一下iPhone SDK forum discussion,其中提到了miniZip。看来这可以处理WinZip文件。

但是,如果它确实是WinZip文件,则应查看WinZip specification并尝试自己解析该文件。基本上,它应该解析一些 header 值,查找压缩的流位置并使用zLib例程对其进行解压缩。

10-07 18:50