j2me-Pak文件 ZT

Posted on 2007-06-06 15:52 my 阅读(385) 评论(0)  编辑  收藏 所属分类: 手机相关
一、什么是Pak文件:
  
  Pak文件就是将多个文件打包为一个单独文件,在这个文件中保存着多个文件的数据,当然还有一些描述文件结构的数据。所以将“Pak”作为文件的后缀是一种常规的用法,大家可以自定义其它的文件后缀。
  
  二、为什么使用Pak文件:
  
JAVA手机网[www.cnjm.net]
  由于MIDP对发布安装的j2me程序大小进行了限制,所以缩小发布程序就意味着能够提供更多的程序或者内容(如图片、音乐)给用户。而通过研究发现zip/jar算法对大文件的压缩率高于对等量的多个小文件的压缩率。
  
  当然还有其它方法,这里简单做一下讨论比如使用混淆器ProGuard的“-overloadaggressively”选项使jar文件缩小,但也会导致一些错误,因为这种方法生成jar中的class符合java byte code标准,但是与java语法相悖,严重的可能造成一些jre对Object的序列化错误。
  
  所以使用Pak方法将程序中要用到的资源(图片、音乐、文本)组合为单一文件是一个安全有效的方法。而且对于一些商用程序,完全可以在pak文件中对文件数据进行加密,很好的保护了作者和公司的权益。本人的sample中使用了简单的“加减法”加密,对于手机这类设备来讲是一个效率较高的选择。
  
  三、Pak文件的结构:
  
  大家可以自己设计Pak文件结构,本人这里只是抛砖引玉的作个sample。下面就是本人设计的Pak文件结构:
  
  PAK File Header:Pak文件的头部
JAVA手机网[www.cnjm.net]
  
JAVA手机网[www.cnjm.net]
  * 签名: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的顺序连接在一起的文件数据。
  * 文件数据
  
  四、程序框架:
  
  说明:由于Pak文件的制作和使用分别要使用两个java应用领域:j2se和j2me,所以本人将PakUtil类制作了2个版本(j2se和j2me)。
  
  程序框架如下:
JAVA手机网[www.cnjm.net]
  1。PakHeader类,定义了Pak文件头。
  2。PakFileTable类,定义Pak文件table。
  3。PakUtil类(j2se版),具备两个功能:将多个png图片合成一个Pak文件,并使用简单的加减加密法对其进行加密;从Pak文件中取出png图片,构造byte数组(可以用来构造Image对象)或者写为文件。
  PakUtil类(j2me版),具备的功能:从Pak文件中取出png图片,构造byte数组(可以用来构造Image对象)。

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 63, comments - 45, trackbacks - 0, articles - 99

Copyright © my