功能介紹
ARF文件分為4部分: 1、16字節(jié)文件頭 2、子文件名列表 3、子文件信息列表 4、子文件數(shù)據(jù) 一、ARF文件頭數(shù)據(jù) 這一部分共16字節(jié),前4字節(jié)是文件標(biāo)志(41520000),接下來4字節(jié)是子文件個(gè)數(shù),4字節(jié)加密文件名列表用的MagicKey,最后4字節(jié)是子文件信息列表的偏移地址。 二、子文件名列表 這一部分是不定長的,有N個(gè)shortstring組成。而且文件名的前4的整數(shù)倍字節(jié)被加密過,需要用MagicKey異或解密。 三、子文件信息列表 首先定義一個(gè)結(jié)構(gòu)structFileInfo{WORDID;//子文件的編號(hào),一般是從0開始計(jì)算,貌似沒什么實(shí)際意義DWORDOffset;//子文件在包中的起始偏移量DWORDFileSize;//子文件的大小BYTEMagicKey;//解密子文件用的MagicKey}; 第三部分由N個(gè)FileInfo結(jié)構(gòu)組成,N是子文件的總個(gè)數(shù)。 四、子文件數(shù)據(jù) 除去前三部分,剩下就是子文件數(shù)據(jù)。解包的時(shí)候直接通過FileInfo.Offset在文件中Seek,然后讀取FileInfo.FileSize字節(jié)的數(shù)據(jù)。不過需要注意的是,每個(gè)小文件的頭20字節(jié)被MagicKey異或過了,我們?cè)佼惢蚧貋砭蚈K啦。