0

我正在开发一个需要不时下载约 50 MB 数据的 iOS 应用程序。bzip2 给了我最好的压缩率(将大小减小到 8 MB)。

问题是:如何解压app中的数据?

我做了一些研究——我发现的唯一两件事是 Keka(但完整的源代码不是公开的)和 bzip2 命令行工具的 C++ 源代码,这对我来说太长太复杂了,无法对我的在给我的时间内应用程序。

我正在寻找类似http://commons.apache.org/proper/commons-compress/的东西,它被 Android 版本的应用程序使用。

如果您知道如何使用 7zip 而不是 bzip2 来做到这一点,那就可以了——只是效率稍低了一点。

4

2 回答 2

1

bzip2libbzip2只要您有足够好的编译器,源代码就会构建为您可以在代码中链接到的代码(我相信 iOS 就是这种情况——尽管我没有尝试过......)

您需要编写的代码如下所示:

int error;
const int MAXSIZE = 4096;    // Or some other decent size.
char buffer[MAXSIZE];
FILE *f = fopen("somefile.bz2", "rb"); 
BZFILE* b = BZ2_bzReadOpen(&error, f, 0, 0, NULL, 0);
do {
   BZ2_bzRead(&error, b, buffer, MAXSIZE);
} while(error != BZ_OK);
BZ2_bzReadClose(&error, b);

您可能需要为“错误”添加更多检查,但这个概念应该有效[我认为 - 我只是根据文档中的所有代码以及我过去使用此包和类似包的经验输入了所有代码]。

于 2013-09-10T12:25:18.743 回答
0

我建议你静态链接到 libbz2。在 Google 中查找资源。

于 2013-09-10T12:24:27.710 回答