一种压缩和解压方法及装置制造方法及图纸

技术编号:37504920 阅读:32 留言:0更新日期:2023-05-07 09:40
本发明专利技术涉及计算机技术领域,公开了一种压缩和解压方法及装置。该方法将待压缩文件按固定的大小分割成若干个文件块,将每个文件的文件块按顺序写入文件内容区,文件压缩后,将文件数量和文件信息分别存在压缩包的文件数量区和文件信息区,并将整个压缩包的有关信息存在文件包信息区,形成压缩包;在解压时,先在压缩包截取文件数量区、文件信息区和文件包信息区,将这三部分保存在内存里,再按顺序在文件内容区逐个截取文件,截取后的文件保存在目标文件中,每次在压缩包里截取内容,压缩包的大小可以相应减小,压缩包所占用的存储或内存空间也会减小;在解压完成后再使用MD5检验,保证解压后文件的完整性。解压后文件的完整性。解压后文件的完整性。

【技术实现步骤摘要】
一种压缩和解压方法及装置


[0001]本专利技术涉及计算机
,特别是涉及一种压缩和解压方法及装置。

技术介绍

[0002]目前的解压方法有很多,比如bunzip2、unzip、gunzip、uncompress、tar等,但这些方法在解压后会保留源文件,所以在升级解包过程中会至少需要比源文件大一倍的存储或内存空间,以至于对于那些剩余存储或内存空间比源文件两倍还小的设备将无法解压文件。而且目前的解压方法没有对解压后的文件逐个做完整性校验。
[0003]因此,目前的解压方法需要较大的存储或内存空间,若设备的内存空间小于源文件的两倍,则不能成功解压文件。而且没有对解压后的文件逐个做md5sum或sha256sum校验,无法保证文件内容的完整性。

技术实现思路

[0004]本专利技术提供了一种压缩和解压方法及装置,可以在解压时节省内存,保证解压后文件的完整性。
[0005]为了解决上述技术问题,本专利技术的第一实施例提供了一种压缩方法,包括:
[0006]确定每个待压缩文件的大小;
[0007]将每个待压缩文件以预设的大小切割成若干个文件块;
[0008]逐个读取每个待压缩文件的若干个文件块,并将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息;
[0009]待所有待压缩文件的文件块都被写入压缩包的文件内容区后,生成压缩包;其中,所述压缩包按序依次设置有所述文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了压缩包的文件包版本信息、文件包特性和文件包大小。
[0010]本专利技术将每个待压缩文件按固定的大小分割成若干个文件块,将每个待压缩文件的文件块按顺序写入文件内容区,待压缩文件都被写入文件内容区,生成设置了文件内容区、文件数量区、文件信息区和文件包信息区的压缩包,改进了压缩方法,可以快速清晰地得知压缩包内的文件内容和文件信息。
[0011]进一步地,所述将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息,具体为:
[0012]将每个待压缩文件的文件块写入压缩包的文件内容区,形成若干个写入文件;
[0013]记录每个写入文件在压缩包的位置,确定每个写入文件的偏移位置;
[0014]确定每个写入文件的大小为对应的待压缩文件的大小。。
[0015]本专利技术在将每个待压缩文件写入文件内容区时,会记录它们在文件内容区的位置,以此得到每个文件的偏移位置和大小,以保证在解压文件包时可以根据这些信息准确截取文件,避免损坏压缩的文件。
[0016]进一步地,所述待所有待压缩文件的文件块都被写入压缩包的文件内容区后,具体为:
[0017]将文件数量写入压缩包的文件数量区,并将每个写入文件的文件信息写入压缩包的文件信息区;
[0018]计算文件内容区、文件数量区、文件信息区和文件包信息区的大小总和,确定压缩包的文件包大小;
[0019]读取压缩包的文件包版本信息和文件包特性,并将压缩包的文件包大小、文件包版本信息和文件包特性写入压缩包的文件包信息区。
[0020]本专利技术在所有待压缩文件都写入压缩包后,会将文件数量和文件信息分别存在压缩包的文件数量区和文件信息区,将整个压缩包的有关信息存在文件包信息区,保证压缩包的信息完整,也为后续的解压提供了便利。
[0021]进一步地,所述将每个写入文件的文件信息写入压缩包的文件信息区,具体为:
[0022]读取每个写入文件的类型、版本和名称;
[0023]利用MD5算法获取每个写入文件的md5sum;
[0024]根据每个写入文件的位置偏移信息,获取每个写入文件的偏移位置和大小;
[0025]根据每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,生成每个写入文件的文件信息;
[0026]获取所有写入文件的文件信息,将每个写入文件的文件信息写入压缩包的文件信息区。
[0027]本专利技术的每个写入文件的文件信息是由文件的类型、版本、名称、md5sum、偏移位置和大小构成的,其中文件的类型、版本和名称是文件压缩时用户输入的,md5sum由MD5算法通过计算得到,偏移位置和大小根据文件的位置偏移信息获得,每个文件的文件信息结构和长度都固定,可以方便后续对文件信息区进行解析。
[0028]进一步地,所述将每个待压缩文件以预设的大小切割成若干个文件块,具体为:
[0029]按预设的大小从每个文件的末尾向前依次切割,形成若干个文件块,并将所述若干个文件块做加密处理。
[0030]本专利技术在切割需要压缩的文件时,会对切割好的文件块做加密处理,提高压缩文件的安全性和保密性。
[0031]相应的,本专利技术第一实施例提供了一种压缩装置,包括:确定模块、切割模块、写入模块和生成模块;
[0032]所述确定模块用于确定每个待压缩文件的大小;
[0033]所述切割模块用于将每个待压缩文件以预设的大小切割成若干个文件块;
[0034]所述写入模块用于逐个读取每个待压缩文件的若干个文件块,并将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息;
[0035]所述生成模块用于待所有待压缩文件的文件块都被写入压缩包的文件内容区后,生成压缩包;其中,所述压缩包按序依次设置有所述文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了压缩包的文件包版本信息、文件包特性和文件包大小。
[0036]进一步地,所述生成模块,包括:第一写入单元、计算单元和第二写入单元;
[0037]所述第一写入单元用于将文件数量写入压缩包的文件数量区,并将每个写入文件的文件信息写入压缩包的文件信息区;
[0038]所述计算单元用于计算文件内容区、文件数量区、文件信息区和文件包信息区的大小总和,确定压缩包的文件包大小;
[0039]所述第二写入单元用于读取压缩包的文件包版本信息和文件包特性,并将压缩包的文件包大小、文件包版本信息和文件包特性写入压缩包的文件包信息区。
[0040]本专利技术第一实施例将待压缩文件按固定的大小分割成若干个文件块,将每个文件的文件块按顺序写入文件内容区,文件压缩后,将文件数量和文件信息分别存在压缩包的文件数量区和文件信息区,并将整个压缩包的有关信息存在文件包信息区,形成压缩包;本专利技术改进了压缩方法,可以快速清晰地得知压缩包内的文件内容和文件信息。
[0041]本专利技术第二实施例提供了一种解压方法,包括:
[0042]获取待解压的第一压缩包;其中,所述第一压缩包按序依次设置有文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个待解压本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种压缩方法,其特征在于,包括:确定每个待压缩文件的大小;将每个待压缩文件以预设的大小切割成若干个文件块;逐个读取每个待压缩文件的若干个文件块,并将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息;待所有待压缩文件的文件块都被写入压缩包的文件内容区后,生成压缩包;其中,所述压缩包按序依次设置有所述文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了压缩包的文件包版本信息、文件包特性和文件包大小。2.根据权利要求1所述的压缩方法,其特征在于,所述将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息,具体为:将每个待压缩文件的文件块写入压缩包的文件内容区,形成若干个写入文件;记录每个写入文件在压缩包的位置,确定每个写入文件的偏移位置;确定每个写入文件的大小为对应的待压缩文件的大小。3.根据权利要求1所述的压缩方法,其特征在于,所述待所有待压缩文件的文件块都被写入压缩包的文件内容区后,具体为:将文件数量写入压缩包的文件数量区,并将每个写入文件的文件信息写入压缩包的文件信息区;计算文件内容区、文件数量区、文件信息区和文件包信息区的大小总和,确定压缩包的文件包大小;读取压缩包的文件包版本信息和文件包特性,并将压缩包的文件包大小、文件包版本信息和文件包特性写入压缩包的文件包信息区。4.根据权利要求3所述的压缩方法,其特征在于,所述将每个写入文件的文件信息写入压缩包的文件信息区,具体为:读取每个写入文件的类型、版本和名称;利用MD5算法获取每个写入文件的md5sum;根据每个写入文件的位置偏移信息,获取每个写入文件的偏移位置和大小;根据每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,生成每个写入文件的文件信息;获取所有写入文件的文件信息,将每个写入文件的文件信息写入压缩包的文件信息区。5.根据权利要求1所述的压缩方法,其特征在于,所述将每个待压缩文件以预设的大小切割成若干个文件块,具体为:按预设的大小从每个文件的末尾向前依次切割,形成若干个文件块,并将所述若干个文件块做加密处理。6.一种解压方法,其特征在于,包括:获取待解压的第一压缩包;其中,所述第一压缩包按序依次设置有文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个待解压文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了第一压缩包的文件包版本信息、
文件包特性和文件包大小;截取第一压缩包的文件数量区、文件信息区和文件包信息区,并将所述文件数量区、文件信息区和文件包信息区保存至内存中;在第一压缩包的文件信息区读取每个待解压文件的大小和偏移位置;根据所述每...

【专利技术属性】
技术研发人员:皮晓聪李柱栋
申请(专利权)人:广州通则康威智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1