我正在使用flydolphinstudio 的 Objective-Zip,它是一个 Objective-C 压缩库。我正在使用此问题中给出的答案压缩 .txt文件。
就我而言,我没有要循环的数组,因此对于单个文件,我有以下内容:
ZipFile *zipFile= [[ZipFile alloc] initWithFileName:zip_file_name mode:ZipFileModeCreate];
NSDictionary *attributes = [[NSFileManager defaultManager]attributesOfItemAtPath:txt_file_name error:&error];
NSDate *Date = [attributes objectForKey:NSFileCreationDate];
NSData *filedata = [NSData dataWithContentsOfFile:txt_file_name];
ZipWriteStream *stream = [zipFile writeFileInZipWithName:txt_file_name fileDate:Date compressionLevel:ZipCompressionLevelBest];
[stream writeData:filedata];
[stream finishedWriting];
[zipFile close];
压缩过程似乎有效,我得到了一个具有正确名称和非零大小的 .zip 文件。但是,当我尝试在我的 Mac 上解压缩此文件时,它会进入 .cpgz 循环。从这篇文章来看,我认为是因为我的文件在那里的某个地方被损坏了。此外,当我将它上传到服务器并尝试在 linux 机器上打开它时,它会向我们吐出错误信息:
$ unzip COCR2_100.zip 存档:COCR2_100.zip 未找到中央目录结束签名。此文件不是 zip 文件,或者它构成多部分存档的一个磁盘。在后一种情况下,中央目录和 zipfile 注释将在此存档的最后一个磁盘上找到。注意:COCR2_100.zip 可能是普通的可执行文件,而不是存档解压缩:在 COCR2_100.zip 或 COCR2_100.zip.zip 之一中找不到 zipfile 目录,也找不到 COCR2_100.zip.ZIP 期间。
这也表明它已损坏。
有没有人知道为什么它可能会被破坏?谢谢!