2024年4月29日发(作者:)

Pak文件的结构

pak文件就是将多个文件打包为一个单独文件,在这个文件中保存着多个文件的数据,

当然还有一些描述文件结构的数据。所以将“Pak”作为文件的后缀是一种常规的用法,

可以自定义其它的文件后缀。

使用Pak方法将程序中要用到的资源(图片、音乐、文本)组合为单一文件是一个

安全有效的方法。

由于MIDP对j2me程序大小有限制,所以缩小发布程序就意味着能够提供更多的程

序或者内容(如图片、音乐)给用户。因为zip/jar算法对大文件的压缩率高于对等量的

多个小文件的压缩率,所以先把多个小文件按一定结构组合成一个pak文件,再压缩成

jar包,有助于减少程序容量。同时可以在pak文件中对文件数据进行加密,可以保护作

者权益。

可以自行设计Pak文件结构,下面是一个参考例子:

同样的可以把Java me平台上的pak文件使用方法修改扩展应用到其他平台上,如

Android/OPhone,wm等

PAK File Header:Pak文件的头部

* 签名:6字节char数组 * 版本号:32位float * 文件table数量:32位整数 * 密

码行为:8位字节 * 密码:8位字节 * 文件唯一ID:10字节char数组 * 保留位:32位

整数(4字节)

File Table:Pak文件中包含文件的列表,在一个Pak文件中一个被包含的文件对应

一个File Table。

* 文件名:30字节char数组 * 文件大小:32位整型 * 文件在pak文件中的位移:

32位整数

Concatenated File Data:按File Table的顺序连接在一起的文件数据。

* 文件数据

四、程序框架:

1。PakHeader类,定义了Pak文件头。

2。PakFileTable类,定义Pak文件table。

3。PakUtil类(J2SE版),具备两个功能:将多个png图片合成一个Pak文件,并

使用简单的加减加密法对其进行加密;从Pak文件中取出png图片,构造byte数组

(可以用来构造Image对象)或者写为文件。

PakUtil类(j2me版),具备的功能:从Pak文件中取出png图片,构造byte数组

(可以用来构造Image对象)。

可自行设计实现程序,特别是关键的加密算法

以下为参考代码: