用C++实现文件资源的打包与解包

更新时间:2023-07-19 05:47:02 阅读: 评论:0

用C++实现文件资源的打包与解包
第5卷第21期2005年l1月
16711815(2005)21—1653—03
科学技术与工程
ScienceTechnologyandEngineering
V o1.5No.21NOV.2005
阿q正传读后感
⑥2005Sci.Tech.Engng.
用C++实现文件资源的打包与解包
周颖杰王瑾张鹏刘洁
(军械工程学院计算机工程系,石家庄050003)
摘要文件资源的打包与解包在实际当中有着广泛的应用,介绍了Windows编程中文件打包,解包的基本原
理及实现方法,并利用可变长结构解决了文件信息存储过程中的空间浪费问题. 关键词C++打包解包
中图法分类号TP317;文献标识码B
在实际应用中,文件资源的打包解包很常见,就
是把多个零散的文件转换成单一的文件,常用的压许昌职业技术学院网络教学平台
缩软件也可以认为是对文件一种打包处理,同时通
过某种算法对文件进行压缩.大量的零散文件容易
产生很多"碎片",浪费存储空间,有些文件如文本文
件能够被随意修改,安全性得不到保证等等.通过
文件打包可以将多个文件转换成单个文件,减少了雪人画
"碎片",节约了存储空间,并且可以将文本文件转换
成二进制文件,提高了数据安全性.
l文件结构设计
文件打包后要保证在使用的时候能够正确地解
包,恢复成原来的文件,所以打包后的文件结构必须
运营总监职责
要考虑方便以后的解包和使用,应该注意以下几点: (1)具有打包文件的标识信息能够与其他文件
区分;
(2)具有标识文件打包后准确位置的信息,如文怎么发qq空间
件名长度,偏移值,文件长度等;
(3)要考虑文件信息存储时的空间浪费问题.
议息会议常见的打包文件结构一般有如下几种.
逼眼
是将要打包的文件的信息按顺序写入到打包
文件中,其中包括文件的文件名长度,文件名,文件
长度,文件内容等,通过这种结构可以很方便地利用
文件名长度,文件长度分别得到文件名,文件内容,
从而将各个文件从打包文件中提取出来,如图1所
2005年7月12日收到
第一作者简介:周颖杰,男,1981年3月出生,满族,助教,研究方向:计算机应用.
示.二是将各个文件的相关索引信息写在打包文件
的开头,随后再写入各个文件的内容.其中文件名
是固定长的,文件内容可以通过偏移量加上文件长
度来提取,如图2所示.三是通过索引文件和内容
文件两个文件来完成对文件的打包,可以说这种结
构是第二种结构的另一种形式,即将索引信息和文
件内容分开,通过索引文件查找内容文件中各个文
件内容的位置,来完成定位提取,如图3所示.这三
种结构都需要一个文件头,用以与其他类型的文件
区分.
文件头(标识信息)
第一个文件名长度
文件文件名
文件长度
信息文件内容
文件名长度第二个
文件文件名
文件长度
信息文件内容
文件名长度第N个
文件文件名
文件长度
信息文件内容
文件头(标识信息)
窗帘的英语
第一个文件名
文件的偏移值
索引文件长度
第N个文件名
文件的偏移值
索引文件长度
第一个文件内容
第二个文件内容
第N个文件内容
图1提取打包文件图2文件内容提取
这三种结构各有各的特点.第一种结构简单灵活,可以很方便地往打包文件中添加新的文件.第二种结构由于索引信息与文件内容不连续,添加文件时需要进行大量的挪动空间,所以不太方便.第三种结构是前两种结构的结合,可以比较方便地对文件进行添加和删除,而且由于是两个文件来完成
科学技术与工程5卷
对文件的打包,安全性更高,在多层结构的网络数据传输中可以使用这种结构.
索引文件内容文件
文件头(标识信息)
第一个偏移值
文件长度文件的
文件名长度
索引文件名
第二个偏移值
文件长度文件的
文件名长度
索引文件名
偏移值第N个
文件长度文件的
文件名长度
索引文件名
文件头(标识信息)
第一个文件内容
第二个文件内容
第N个文件内容
图3通过索引提取文件
2程序实现
2.1文件打包
了解了第三种结构的内容和特点后就可以据此
进行具体的设计和实现了.由于是对文件资源的打包,所以正确设计存储文件信息的结构和对文件的正确读,写,定位是具体实现中的重点.
首先需要设计存储文件索引信息的结构.在设
计这个结构的时候要考虑到存储空间的浪费问题,
主要是文件名,由于Windows操作系统支持长文件
名,如果文件名设为固定长,那么必然造成存储空间
的浪费,所以应该设为变长结构,并且文件名要放在
结构的最后一项,这样可以通过动态的分配空间,完
成对索引信息的存储和提取,从而实现对文件的打
包和解包.具体结构声明如下.
StructPacklnfo//用于存储文件信息的结构,这
里定义的是一个可变长的结构
{
DWORDdwOfft;//偏移值
DWORDdwSize;,//文件长度
DWORDdwNameLen;//文件名长度
charFileNameE1];//文件名
};
有了存储索引信息的结构之后的工作就是怎样
来添加索引信息以及如何对文件进行操作,win—
dows操作系统提供了丰富的文件操作函数[2],如WriteFile(),ReadFile(),SetFilePointer()等等,通
过这些函数可以方便地对文件进行读,写,定位等操
作.结合第三种结构的特点,打包时最好同时生成
索引文件和内容文件,以确保索引文件中各个文件
的信息与内容文件中各个文件内容一一对应,否则,
解包时就会出错.可通过如下函数实现:
//打包函数.参数分别为索引文件旬柄,内容文件旬柄,要打包的文件的文件名
BOOLCPackFileInstance::PackFile(HANDLEfpPackIndex, HANDLEfpPackFile,char*szFileName)
f
}

本文发布于:2023-07-19 05:47:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1104489.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件   打包   结构
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图