【发布时间】:2011-06-29 22:02:05
【问题描述】:
我需要遍历一组相对较大的文件 (> 5000),依次将每个文件单独压缩并上传到服务器(而不是目录或文件组)。
我最大的问题是要知道在易于实施和性能方面哪种方式是进行压缩的最佳方式。我认为必须有一个标准的 Cocoa 框架来处理显然是一个非常常见的需求,但似乎没有任何这样的框架。到目前为止我发现的其他建议和方法:
- zip.framework at code.google.com,“这是一个可可框架,用于轻松列出、读取和写入 zip 文件。这个框架的主要目的是通过提供一个原生的来防止你在应用程序中使用命令行实用程序。 Cocoa interface” - 似乎很多人都找到了这个链接(但我没有注意到之前有人真正使用过它!)
- ziparchive 也在 code.google.com -“基于开源代码‘MiniZip’”。
- 关于使用
NSTask调用命令行实用程序(例如ditto)的建议很常见,例如在此CocoaDev question 中,但我不喜欢必须这样做的想法 - 同样,这里有人建议
NSTask调用 zip 和 unzip - 但是这个 posting 说“唯一的问题是当文件解压缩时, Mac 标头已被剥离,因此 Mac OS 无法识别该文件!!(即我压缩了一个应用程序,它从文件中剥离了“appl”。当我解压缩它时,它无法使用。” - 某人的框架叫 ZipKit here
- Another CocoaDev question 讨论了几种方法,例如为 C++ 归档代码创建包装器,为 zlib 和 minizip 创建 C 包装器(minizip 是围绕 zlib 构建的)等
- 关于NSDataCategory的东西(没看懂)
- 来自 www.feedface.com 的开源漫画/漫画书阅读器 (!),名为 FFView,它有自己独立的 archiving framework
压缩文件需要在 Windows 中解压。
拜托,我希望有人对满足我类似要求的解决方案有实际经验。正如你所看到的,我已经找到了很多链接,所以只是另一个链接到另一个框架/方法,而没有实际表明它适用于我的问题的东西不会真的很有帮助。
谢谢!
【问题讨论】:
-
您应该考虑将最终使用的任何方法包装在
NSOperation对象中,以便系统可以有效地处理并发性以获得最佳性能。
标签: objective-c cocoa macos