Objective-C 压缩解压行为奇怪导致文件损坏

3
我遇到了一个非常晦涩的问题。 在Mavericks上压缩文件(右键单击-> 压缩)后,可以在Mac、Windows和Linux上解压缩,完好无损。
但是,在iOS设备上使用“ZipArchive”或“SSZipArchive”解压时,同一文件始终会出现错误。如果我通过终端压缩该文件,则可以在iOS设备上正常解压缩。
这个文件只有不到50KB,是一个小视频文件。我尝试设置不同的标志,以查找导致此问题的原因,但我无法找到原因。
我已经尝试过使用最大压缩和最小压缩来压缩文件,以查看是否是导致问题的原因,并测试了zip文件以查看是否存在任何隐藏字符。
更奇怪的是,这些zip文件通常都包含大约50个视频文件,我有大约23个zip文件。解压代码一直工作得很完美,直到两个星期前。在过去的两个星期里,我发现了7个损坏的文件,并且损坏是一致的-总是相同的文件被损坏。
这些被损坏的文件通常比正常文件小几KB,无法打开或强制播放。
它们最初都是使用Mavericks压缩的,而且没有改变过什么。
现在问题更多地是为了查找事实,因为我可以通过终端压缩文件,但我想知道导致此问题的原因,以便将来避免。

请确保您尝试在设备上解压缩的ZIP文件与其他平台上可以解压缩的文件完全相同 - 可能是您的交付机制出现了问题。 - Till
使用“不好”的机制提取文件,然后将其与使用“好”的机制从同一zip文件中提取的相同文件进行比较,以查看有什么不同。 - Hot Licks
它们是完全相同的,我们甚至尝试将它们自己添加到设备上,但仍然面临着同样的问题。最初我们认为是因为它们透过SSL导致了这个问题。 - Marwan
2个回答

0
在OSX上,右键单击->压缩选项会创建一个zip文件,其中包含一个名为__MACOSX的额外目录,其中包含Finder使用的元数据(图像缩略图和其他内容)。有关更详细的解释,请参见this superuser question。 存在此文件夹的原因是因为原始的Mac OS实现了资源叉 - 基本上是一种存储有关特定文件/目录的结构化数据以及未结构化数据的方法,因此可以轻松地通过可执行文件访问-维基百科文章here(也在SU问题中引用)。
iOS不理解这种结构,因此解压失败。

那将是一个完美的解释。曾经停工了1.5年,突然决定不工作了。最近发现的另一条信息是它也不喜欢使用Python库进行Windows压缩。但无论如何感谢你的回答。 - Marwan

0
所以在花费数天调查了这个问题之后,问题最终原来是视频转换脚本中的一个标志导致的,我们也为了安全起见删除了所有文件的压缩,一切似乎都正常工作了。 非常感谢所有做出贡献的人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接