确实坚持尝试编写代码来解压缩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例程对其进行解压缩。