合并资源文件并生成索引文件

工作中经常会遇到这样的问题,就是发现资源文件特别多,尤其是做移动UI相关应用程序的,会产生很多的切图(一般是一些.png)的文件,这样安装和卸载速度会变比较慢,而且也不便于管理,尤其对我们这种喜欢干净的人来说是看着是一种折磨 :)

于是我们自然想到要是将这些资源文件打包成一个文件,然后再产生相应的索引文件,这样使用他的应用程序只需要读一次这个索引文件(这个索引文件的每个entry包含资源文件名(Key)-在这里我们假设他是不会重复的,以及相对在数据打包文件中的offset和长度),就可以非常方便的拿到相应的数据。

为了不使用MFC或者你Win32 API,因为这些东东会让程序变得非常差的移植性(至少我们希望这种小工具是可以在其他平台可以编译执行的),perl之类的脚本语言是非常好的选择,好吧,我没有选择他们,是因为boost同样提供了非常方便的方法可以实现这个小功能。

这个是代码下载链接

下载的压缩包中有以下的文件:
./libiconv-1.9.2-1.exe : 开源的文本编码转换工具,如果您编译这个代码,就需要安装这个跟boost库,并且把设置对相应的头文件和lib路径。
./bin/libiconv2.dll : 小工具执行用到的dll.
./bin/ResIndexCreator.exe : 生成index跟合并文件的工具,在控制台执行:ResIndexCreator 【你要打包的目录】,执行完会生成两个文件,res_index.dat, res_data.dat。
./src/IndexCreator.cpp : 源代码。

另外,代码中用了iconvert的开源代码,是因为一般从中文件操作系统中用GBK编译,所以为了让其他系统(同样的大小端系统)同样可以用这个工具生成的索引文件,我用开源代码将GBK转成了UTF-8。这样大家都可以统一正确的访问了,即使是中文文件名。

好吧,就先这样吧,洗洗睡了。

posted on 2011-07-23 00:56  FREE LOOP  阅读(463)  评论(0编辑  收藏  举报

导航