在iOS应用中解压缩bzip2

时间:2013-09-10 12:01:01

标签: c++ ios objective-c 7zip bzip2

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

问题是:如何解压缩应用程序中的数据?

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

我正在寻找类似于http://commons.apache.org/proper/commons-compress/的应用程序的Android版本。

如果你知道如何使用7zip而不是bzip2来实现它,那就会有效 - 它只是效果不高。

2 个答案:

答案 0 :(得分:1)

bzip2源代码构建为libbzip2,只要您拥有足够好的编译器,您就可以链接到代码中(我相信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);

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

答案 1 :(得分:0)

我建议您静态链接libbz2。在Google中查找来源。