《文件打包技术详解-第一讲教学内容》由会员分享,可在线阅读,更多相关《文件打包技术详解-第一讲教学内容(44页珍藏版)》请在金锄头文库上搜索。
1、 文件打包技术详解 第一讲 打包与解包的价值与意义主讲人 步磊峰UIPower3D界面引擎负责人 第一节 打包的相关概念 打包的定义什么是打包 打包这个词很形象 就是把零碎的文件进行统一重封装 统一管理 比如我们常见的RAR文件 ZIP文件都是很常见的包裹格式 2 第一节 打包的相关概念 打包的方式分类打包比如图片资源打一个包 声音资源打一个包全部打包把所有资源一起打包 4 第一节 打包的相关概念 打包的一般准则和规范原始文件的标识 这个标识可以使原始文件名 路径名 或者也可以是转换后的数据如ID等 先从最简单的说起 使用原始文件名 路径名2 原始文件的大小 把文件打进包裹之后 我们要知道这个
2、原始文件有多大3 原始文件的数据打包在包裹的什么位置 5 第二节 向导生成控制台Package1程序 打开VS2008相关编辑器选择项目win32类型选择Win32控制台应用程序选择控制台应用程序点击完成按钮 6 第三节 Package1打包程序的实现 1 包裹文件的定义2 添加CreatPackage 创建空白包裹 函数 AddFileToPackage 添加一个文件到包裹 函数3 CreatePackage 创建空白包裹 函数的实现4 AddFileToPackage 添加一个文件到包裹 函数的实现5 测试所编写的打包程序6 运行结果显示 7 第三节 Package1打包程序的实现 包裹文
3、件的定义我们在Package h加入最简单的包裹文件定义 8 第三节 Package1打包程序的实现 1 包裹文件的定义2 添加CreatPackage 创建空白包裹 函数 AddFileToPackage 添加一个文件到包裹 函数3 CreatePackage 创建空白包裹 函数的实现4 AddFileToPackage 添加一个文件到包裹 函数的实现5 测试所编写的打包程序6 运行结果显示 9 第三节 Package1打包程序的实现 添加CreatPackage函数 AddFileToPackage函数 10 第三节 Package1打包程序的实现 1 包裹文件的定义2 添加CreatPa
4、ckage 创建空白包裹 函数 AddFileToPackage 添加一个文件到包裹 函数3 CreatePackage 创建空白包裹 函数的实现4 AddFileToPackage 添加一个文件到包裹 函数的实现5 测试所编写的打包程序6 运行结果显示 第三节 Package1打包程序的实现 CreatePackage函数的实现创建空白包裹 第三节 Package1打包程序的实现 1 包裹文件的定义2 添加CreatPackage 创建空白包裹 函数 AddFileToPackage 添加一个文件到包裹 函数3 CreatePackage 创建空白包裹 函数的实现4 AddFileToPac
5、kage 添加一个文件到包裹 函数的实现5 测试所编写的打包程序6 运行结果显示 第三节 Package1打包程序的实现 AddFileToPackage函数的实现添加一个文件到包裹boolCPackage AddFileToPackage constchar szFileName 演示方便 我们不做任何重复性重名判断 打开目标文件FILE fp fopen szFileName rb if fp printf 打开文件 s失败 n szFileName returnfalse 我们先得到下这个文件大小fseek fp 0 SEEK END intFileSize ftell fp fseek
6、 fp 0 SEEK SET 第三节 Package1打包程序的实现 AddFileToPackage函数的实现添加一个文件到包裹 构建包裹数据PackageItemItem strncpy Item FileName szFileName sizeof Item FileName 1 Item FileSize FileSize Item OffsetPackage ftell m fpPackage 同样为了演示方便 我们不做任何写入判断 先把包裹文件信息写入包裹fwrite 第三节 Package1打包程序的实现 AddFileToPackage函数的实现添加一个文件到包裹while 1
7、 读取文件intnReadBytes fread szBuffer 1 sizeof szBuffer fp 写入包裹fwrite szBuffer 1 nReadBytes m fpPackage 如果读取到的数据比缓冲区小 那么说明读取结束了if nReadBytes sizeof szBuffer break 第三节 Package1打包程序的实现 AddFileToPackage函数的实现添加一个文件到包裹 fflush是确保我们的数据写入到磁盘上了fflush m fpPackage 关闭文件fclose fp returntrue 第三节 Package1打包程序的实现 1 包裹文
8、件的定义2 添加CreatPackage 创建空白包裹 函数 AddFileToPackage 添加一个文件到包裹 函数3 CreatePackage 创建空白包裹 函数的实现4 AddFileToPackage 添加一个文件到包裹 函数的实现5 测试所编写的打包程序6 运行结果显示 第三节 Package1打包程序的实现 测试所编写的打包程序好了 我们完成了最最简单的一个包裹类了 接下来我们就看看怎么来打一个简单的包 第三节 Package1打包程序的实现 1 包裹文件的定义2 添加CreatPackage 创建空白包裹 函数 AddFileToPackage 添加一个文件到包裹 函数3 C
9、reatePackage 创建空白包裹 函数的实现4 AddFileToPackage 添加一个文件到包裹 函数的实现5 测试所编写的打包程序6 运行结果显示 第三节 Package1打包程序的实现 运行结果显示编译 得到package1 exe之后 我们随便添加2个文本文件test txt test2 txt到exe相同目录下 运行exe之后 我们成功得到一个文件test pkg 这样最简单的包裹就打好了 第四节 Package2解包程序的实现 1 vs2008向导生成Package2程序2 新建一个CPackageLoader类 这个类负责解出Package1打包的文件 3 在CPacka
10、geLaoder类中添加几个接口4 实现打开包裹文件的OpenPackage函数5 实现得到包裹里面有多少个PackageItemq结构的GetPackageItemCount函数6 实现得到打包文件的信息的GetPackageItem函数7 实现导出包裹文件并保存到szTargetName的ExportPackageItem函数8 测试Package2解包程序9 显示运行结果 第四节 Package2解包程序的实现 vs2008向导生成Package2程序打开VS2008相关编辑器选择项目win32类型选择Win32控制台应用程序选择控制台应用程序点击完成按钮 第四节 Package2解包程
11、序的实现 1 vs2008向导生成Package2程序2 新建一个CPackageLoader类 这个类负责解出Package1打包的文件 3 在CPackageLaoder类中添加几个接口4 实现打开包裹文件的OpenPackage函数5 实现得到包裹里面有多少个PackageItemq结构的GetPackageItemCount函数6 实现得到打包文件的信息的GetPackageItem函数7 实现导出包裹文件并保存到szTargetName的ExportPackageItem函数8 测试Package2解包程序9 显示运行结果 第四节 Package2解包程序的实现 新建一个CPacka
12、geLoader类这个类负责解出Package1打包的文件 第四节 Package2解包程序的实现 1 vs2008向导生成Package2程序2 新建一个CPackageLoader类 这个类负责解出Package1打包的文件 3 在CPackageLaoder类中添加几个接口4 实现打开包裹文件的OpenPackage函数5 实现得到包裹里面有多少个PackageItemq结构的GetPackageItemCount函数6 实现得到打包文件的信息的GetPackageItem函数7 实现导出包裹文件并保存到szTargetName的ExportPackageItem函数8 测试Packag
13、e2解包程序9 显示运行结果 第四节 Package2解包程序的实现 在CPackageLaoder类中添加几个接口为了能读取我们刚才的包裹 我们需要把Package1工程定义的PackageItem定义给复制过来 再添加几个接口 第四节 Package2解包程序的实现 1 vs2008向导生成Package2程序2 新建一个CPackageLoader类 这个类负责解出Package1打包的文件 3 在CPackageLaoder类中添加几个接口4 实现打开包裹文件的OpenPackage函数5 实现得到包裹里面有多少个PackageItemq结构的GetPackageItemCount函数
14、6 实现得到打包文件的信息的GetPackageItem函数7 实现导出包裹文件并保存到szTargetName的ExportPackageItem函数8 测试Package2解包程序9 显示运行结果 第四节 Package2解包程序的实现 实现打开包裹文件的OpenPackage函数包裹的构成 是由PackageItem固定信息 文件内容构成 所以我们只需要读取PackageItem的内容 就知道每个打包文件的详细信息 第四节 Package2解包程序的实现 1 vs2008向导生成Package2程序2 新建一个CPackageLoader类 这个类负责解出Package1打包的文件 3
15、在CPackageLaoder类中添加几个接口4 实现打开包裹文件的OpenPackage函数5 实现得到包裹里面有多少个PackageItemq结构的GetPackageItemCount函数6 实现得到打包文件的信息的GetPackageItem函数7 实现导出包裹文件并保存到szTargetName的ExportPackageItem函数8 测试Package2解包程序9 显示运行结果 第四节 Package2解包程序的实现 实现GetPackageItemCount函数得到包裹里面有多少个PackageItemq结构 第四节 Package2解包程序的实现 1 vs2008向导生成Pa
16、ckage2程序2 新建一个CPackageLoader类 这个类负责解出Package1打包的文件 3 在CPackageLaoder类中添加几个接口4 实现打开包裹文件的OpenPackage函数5 实现得到包裹里面有多少个PackageItemq结构的GetPackageItemCount函数6 实现得到打包文件的信息的GetPackageItem函数7 实现导出包裹文件并保存到szTargetName的ExportPackageItem函数8 测试Package2解包程序9 显示运行结果 第四节 Package2解包程序的实现 实现得到打包文件的信息的GetPackageItem函数 第四节 Package2解包程序的实现 1 vs2008向导生成Package2程序2 新建一个CPackageLoader类 这个类负责解出Package1打包的文件 3 在CPackageLaoder类中添加几个接口4 实现打开包裹文件的OpenPackage函数5 实现得到包裹里面有多少个PackageItemq结构的GetPackageItemCount函数6 实现得到打包文件的信息的Ge