CN116069742A - 一种压缩和解压方法及装置 - Google Patents
一种压缩和解压方法及装置 Download PDFInfo
- Publication number
- CN116069742A CN116069742A CN202310086429.6A CN202310086429A CN116069742A CN 116069742 A CN116069742 A CN 116069742A CN 202310086429 A CN202310086429 A CN 202310086429A CN 116069742 A CN116069742 A CN 116069742A
- Authority
- CN
- China
- Prior art keywords
- file
- package
- area
- compressed
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000006835 compression Effects 0.000 title claims abstract description 125
- 238000007906 compression Methods 0.000 title claims abstract description 125
- 230000006837 decompression Effects 0.000 title claims abstract description 40
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012795 verification Methods 0.000 claims description 18
- 238000004422 calculation algorithm Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 238000007689 inspection Methods 0.000 claims description 5
- 238000012360 testing method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机技术领域,公开了一种压缩和解压方法及装置。该方法将待压缩文件按固定的大小分割成若干个文件块,将每个文件的文件块按顺序写入文件内容区,文件压缩后,将文件数量和文件信息分别存在压缩包的文件数量区和文件信息区,并将整个压缩包的有关信息存在文件包信息区,形成压缩包;在解压时,先在压缩包截取文件数量区、文件信息区和文件包信息区,将这三部分保存在内存里,再按顺序在文件内容区逐个截取文件,截取后的文件保存在目标文件中,每次在压缩包里截取内容,压缩包的大小可以相应减小,压缩包所占用的存储或内存空间也会减小;在解压完成后再使用MD5检验,保证解压后文件的完整性。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种压缩和解压方法及装置。
背景技术
目前的解压方法有很多,比如bunzip2、unzip、gunzip、uncompress、tar等,但这些方法在解压后会保留源文件,所以在升级解包过程中会至少需要比源文件大一倍的存储或内存空间,以至于对于那些剩余存储或内存空间比源文件两倍还小的设备将无法解压文件。而且目前的解压方法没有对解压后的文件逐个做完整性校验。
因此,目前的解压方法需要较大的存储或内存空间,若设备的内存空间小于源文件的两倍,则不能成功解压文件。而且没有对解压后的文件逐个做md5sum或sha256sum校验,无法保证文件内容的完整性。
发明内容
本发明提供了一种压缩和解压方法及装置,可以在解压时节省内存,保证解压后文件的完整性。
为了解决上述技术问题,本发明的第一实施例提供了一种压缩方法,包括:
确定每个待压缩文件的大小;
将每个待压缩文件以预设的大小切割成若干个文件块;
逐个读取每个待压缩文件的若干个文件块,并将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息;
待所有待压缩文件的文件块都被写入压缩包的文件内容区后,生成压缩包;其中,所述压缩包按序依次设置有所述文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了压缩包的文件包版本信息、文件包特性和文件包大小。
本发明将每个待压缩文件按固定的大小分割成若干个文件块,将每个待压缩文件的文件块按顺序写入文件内容区,待压缩文件都被写入文件内容区,生成设置了文件内容区、文件数量区、文件信息区和文件包信息区的压缩包,改进了压缩方法,可以快速清晰地得知压缩包内的文件内容和文件信息。
进一步地,所述将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息,具体为:
将每个待压缩文件的文件块写入压缩包的文件内容区,形成若干个写入文件;
记录每个写入文件在压缩包的位置,确定每个写入文件的偏移位置;
确定每个写入文件的大小为对应的待压缩文件的大小。。
本发明在将每个待压缩文件写入文件内容区时,会记录它们在文件内容区的位置,以此得到每个文件的偏移位置和大小,以保证在解压文件包时可以根据这些信息准确截取文件,避免损坏压缩的文件。
进一步地,所述待所有待压缩文件的文件块都被写入压缩包的文件内容区后,具体为:
将文件数量写入压缩包的文件数量区,并将每个写入文件的文件信息写入压缩包的文件信息区;
计算文件内容区、文件数量区、文件信息区和文件包信息区的大小总和,确定压缩包的文件包大小;
读取压缩包的文件包版本信息和文件包特性,并将压缩包的文件包大小、文件包版本信息和文件包特性写入压缩包的文件包信息区。
本发明在所有待压缩文件都写入压缩包后,会将文件数量和文件信息分别存在压缩包的文件数量区和文件信息区,将整个压缩包的有关信息存在文件包信息区,保证压缩包的信息完整,也为后续的解压提供了便利。
进一步地,所述将每个写入文件的文件信息写入压缩包的文件信息区,具体为:
读取每个写入文件的类型、版本和名称;
利用MD5算法获取每个写入文件的md5sum;
根据每个写入文件的位置偏移信息,获取每个写入文件的偏移位置和大小;
根据每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,生成每个写入文件的文件信息;
获取所有写入文件的文件信息,将每个写入文件的文件信息写入压缩包的文件信息区。
本发明的每个写入文件的文件信息是由文件的类型、版本、名称、md5sum、偏移位置和大小构成的,其中文件的类型、版本和名称是文件压缩时用户输入的,md5sum由MD5算法通过计算得到,偏移位置和大小根据文件的位置偏移信息获得,每个文件的文件信息结构和长度都固定,可以方便后续对文件信息区进行解析。
进一步地,所述将每个待压缩文件以预设的大小切割成若干个文件块,具体为:
按预设的大小从每个文件的末尾向前依次切割,形成若干个文件块,并将所述若干个文件块做加密处理。
本发明在切割需要压缩的文件时,会对切割好的文件块做加密处理,提高压缩文件的安全性和保密性。
相应的,本发明第一实施例提供了一种压缩装置,包括:确定模块、切割模块、写入模块和生成模块;
所述确定模块用于确定每个待压缩文件的大小;
所述切割模块用于将每个待压缩文件以预设的大小切割成若干个文件块;
所述写入模块用于逐个读取每个待压缩文件的若干个文件块,并将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息;
所述生成模块用于待所有待压缩文件的文件块都被写入压缩包的文件内容区后,生成压缩包;其中,所述压缩包按序依次设置有所述文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了压缩包的文件包版本信息、文件包特性和文件包大小。
进一步地,所述生成模块,包括:第一写入单元、计算单元和第二写入单元;
所述第一写入单元用于将文件数量写入压缩包的文件数量区,并将每个写入文件的文件信息写入压缩包的文件信息区;
所述计算单元用于计算文件内容区、文件数量区、文件信息区和文件包信息区的大小总和,确定压缩包的文件包大小;
所述第二写入单元用于读取压缩包的文件包版本信息和文件包特性,并将压缩包的文件包大小、文件包版本信息和文件包特性写入压缩包的文件包信息区。
本发明第一实施例将待压缩文件按固定的大小分割成若干个文件块,将每个文件的文件块按顺序写入文件内容区,文件压缩后,将文件数量和文件信息分别存在压缩包的文件数量区和文件信息区,并将整个压缩包的有关信息存在文件包信息区,形成压缩包;本发明改进了压缩方法,可以快速清晰地得知压缩包内的文件内容和文件信息。
本发明第二实施例提供了一种解压方法,包括:
获取待解压的第一压缩包;其中,所述第一压缩包按序依次设置有文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个待解压文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了第一压缩包的文件包版本信息、文件包特性和文件包大小;
截取第一压缩包的文件数量区、文件信息区和文件包信息区,并将所述文件数量区、文件信息区和文件包信息区保存至内存中;
在第一压缩包的文件信息区读取每个待解压文件的大小和偏移位置;
根据所述每个待解压文件的大小和偏移位置,在第一压缩包的文件内容区逐个截取待解压文件,解压第一压缩包内的所有待解压文件;
对每个解压后文件进行解密处理,并将每个解压后文件保存在目标文件中;
对每个解压后文件做MD5码检验。
本发明在进行解压时,先截取待解压压缩包的文件数量区、文件信息区和文件包信息区,将这三部分保存在内存里,再根据文件信息区的信息,按顺序在文件内容区逐个截取文件,截取后的文件经过解密后保存在目标文件中,并对解压出的文件做MD5检验,每次在压缩包里截取内容,压缩包的大小可以相应减小,压缩包所占用的存储或内存空间也会减小,在解压完成后使用MD5检验,可以保证解压后文件的完整性。
进一步地,所述对每个解压后文件做MD5码检验,具体为:
若MD5校验成功,则确定解压后文件完整;
若MD5校验失败,则停止文件截取,删除已截取文件和未截取完成的文件,释放内存空间。
本发明在每个文件解压完成后,会使用MD5算法检验文件的完整性,若校验失败,会及时停止文件截取,并删除已截取文件和未截取完成的文件,节省内存空间。
相应的,本发明第二实施例提供了一种解压装置,包括:获取模块、截取模块、读取模块、解压模块、解密模块和校验模块;
所述获取模块用于获取待解压的第一压缩包;其中,所述第一压缩包按序依次设置有文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个待解压文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了第一压缩包的文件包版本信息、文件包特性和文件包大小;
所述截取模块用于截取第一压缩包的文件数量区、文件信息区和文件包信息区,并将所述文件数量区、文件信息区和文件包信息区保存至内存中;
所述读取模块用于在第一压缩包的文件信息区读取每个待解压文件的大小和偏移位置;
所述解压模块用于根据所述每个待解压文件的大小和偏移位置,在第一压缩包的文件内容区逐个截取待解压文件,解压第一压缩包内的所有待解压文件;
所述解密模块用于对每个解压后文件进行解密处理,并将每个解压后文件保存在目标文件中;
所述校验模块用于对每个解压后文件做MD5码检验。
本发明第二实施例在解压时,先在压缩包截取文件数量区、文件信息区和文件包信息区,将这三部分保存在内存里,再按顺序在文件内容区逐个截取文件,截取后的文件保存在目标文件中,每次在压缩包里截取内容,压缩包的大小可以相应减小,压缩包所占用的存储或内存空间也会减小;在解压完成后再使用MD5检验,保证解压后文件的完整性。
附图说明
图1为本发明提供的压缩方法的一种实施例的流程示意图;
图2为本发明提供的解压方法的一种实施例的流程示意图;
图3为本发明提供的压缩包的一种实施例的示意图;
图4为本发明提供的压缩方法的一种实施例的示意图;
图5为本发明提供的解压方法的一种实施例的示意图;
图6为本发明提供的解压方法的另一种实施例的示意图;
图7为本发明提供的压缩装置的一种实施例的结构示意图;
图8为本发明提供的解压装置的一种实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,是本发明提供的压缩方法的一种实施例的流程示意图,该方法包括步骤101至步骤104,各步骤具体如下:
步骤101:确定每个待压缩文件的大小;
步骤102:将每个待压缩文件以预设的大小切割成若干个文件块。
在本发明第一实施例中,将每个待压缩文件以预设的大小切割成若干个文件块,具体为:
按预设的大小从每个文件的末尾向前依次切割,形成若干个文件块,并将所述若干个文件块做加密处理。
作为本发明第一实施例的一种举例,合并一个文件到压缩包时,可以按512KB块大小从源文件的末尾向前依次读取内容,并做加密处理后写入目标压缩包的文件内容区。当文件大小不是512KB整数倍时,文件不能分割成全是512KB大小的文件块,所以会将源文件尾部的第一块内容将按文件总大小与512KB取余后的大小读取。在文件切割成多个文件块时,会对切割好的文件块做加密处理,提高压缩文件的安全性和保密性。合并多个文件到压缩包时,文件会依次按顺序读取合并到文件包文件内容区。
步骤103:逐个读取每个待压缩文件的若干个文件块,并将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息。
在本发明第一实施例中,将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息,具体为:
将每个待压缩文件的文件块写入压缩包的文件内容区,形成若干个写入文件;
记录每个写入文件在压缩包的位置,确定每个写入文件的偏移位置;
确定每个写入文件的大小为对应的待压缩文件的大小。
在本发明第一实施例中,将每个待压缩文件写入文件内容区时,会记录它们在文件内容区的位置,以此得到每个文件的偏移位置和大小,以保证在解压文件包时可以根据这些信息准确截取文件,避免损坏压缩的文件。
作为本发明第一实施例的一种举例,每写入一个文件进压缩包,就会记录此文件在压缩包中的偏移位置至压缩包的文件信息区。从压缩包某个位置开始写入一个文件的内容,这个位置就是该文件在压缩包的偏移位置。例如,第一个文件写入压缩包的文件内容区,其偏移位置就是0,第二个文件偏移位置是第一个文件的大小,依次类推,除了第一个文件外其余文件偏移位置就是前面所有文件大小累加值。为了后续方便解析,设置文件信息区的大小固定,单个文件信息结构长度为32(类型)+64(版本)+32(大小)+32(偏移位置)+64(MD5)+256(名称)=416字节,固定为50个文件信息,总长度为50*416=20800字节。
步骤104:待所有待压缩文件的文件块都被写入压缩包的文件内容区后,生成压缩包;其中,所述压缩包按序依次设置有所述文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了压缩包的文件包版本信息、文件包特性和文件包大小。
在本发明第一实施例中,待所有待压缩文件的文件块都被写入压缩包的文件内容区后,具体为:
将文件数量写入压缩包的文件数量区,并将每个写入文件的文件信息写入压缩包的文件信息区;
计算文件内容区、文件数量区、文件信息区和文件包信息区的大小总和,确定压缩包的文件包大小;
读取压缩包的文件包版本信息和文件包特性,并将压缩包的文件包大小、文件包版本信息和文件包特性写入压缩包的文件包信息区。
在本发明第一实施例中,在所有待压缩文件都写入压缩包后,会将计算文件内容区的文件数量,并将该数量记录在文件数量区;在文件内容区读取每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,记录在文件信息区间;再将文件包版本信息、文件包大小、文件包特性三个信息写入文件包信息区。文件包信息区间的大小固定,文件包版本和文件包特性可以由用户通过设置计算机应用程序参数定义;文件包大小为文件内容区大小、文件数量区大小、文件信息区大小和文件包信息区大小总和。将压缩包内的各种信息存储在相应的区间,可以保证压缩包的信息完整,也为后续的解压提供了便利。
在本发明第一实施例中,将每个写入文件的文件信息写入压缩包的文件信息区,具体为:
读取每个写入文件的类型、版本和名称;
利用MD5算法获取每个写入文件的md5sum;
根据每个写入文件的位置偏移信息,获取每个写入文件的偏移位置和大小;
根据每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,生成每个写入文件的文件信息;
获取所有写入文件的文件信息,将每个写入文件的文件信息写入压缩包的文件信息区。
在本发明第一实施例中,每个写入文件的文件信息由文件的类型、版本、名称、md5sum、偏移位置和大小构成的,其中文件的类型、版本和名称,可以由用户通过设置计算机应用程序参数定义;每个文件md5sum都不一样,可以由MD5算法通过计算得到;文件的偏移位置和大小根据文件的位置偏移信息获得。
作为本发明第一实施例的一种举例,如图3所示,是本发明提供的压缩包的一种实施例的示意图。将多个文件合并压缩成一个文件包时,这个文件包可以从开始位置到末尾分成文件内容区、文件数量区、文件信息区和文件包信息区,该文件包能支持50个文件合并压缩。文件内容区用于存储需要压缩的文件,若多个文件压缩在一个文件包,各个文件的内容是按顺序进行存储;文件数量区用于存储打包文件总数量;文件信息区用于存储打入包的各文件信息,固定存储50个信息。其中,各文件的信息需要按照文件内容区的顺序进行存储,每个文件的信息按文件类型、文件版本、文件大小、偏移位置、md5sum、文件名称的顺序进行存储;文件包信息区用于存储多个文件按此结构合成一个包后的文件信息。
作为本发明第一实施例的一种举例,如图4所示,是本发明提供的压缩方法的一种实施例的示意图。以压缩两个文件为例,压缩文件1和文件2,先将两个文件按512KB切割成多个文件块,由于两个文件的大小都不是512KB整数倍时,所以会将两个文件尾部的第一块内容是按文件总大小与512KB取余后的大小读取的。压缩时,按顺序先读取文件1的内容,再读取文件2的内容,对于单个文件,是从源文件的末尾向前依次读取文件块,先读取尾部第一块文件块,保存在文件内容区中该文件的第一块位置。文件1和文件2的内容都读取完毕后,将文件数量、文件1和文件2的信息和整个文件包的信息都存储在相应区间,形成压缩包。
相应的,如图7所示,是本发明提供的压缩装置的一种实施例的结构示意图,该装置包括切割模块301、写入模块302和生成模块303;
确定模块301用于确定每个待压缩文件的大小;
切割模块302用于将每个待压缩文件以预设的大小切割成若干个文件块;
写入模块303用于逐个读取每个待压缩文件的若干个文件块,并将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息;
生成模块304用于待所有待压缩文件的文件块都被写入压缩包的文件内容区后,生成压缩包;其中,所述压缩包按序依次设置有所述文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了压缩包的文件包版本信息、文件包特性和文件包大小。
在本发明第一实施例中,生成模块304包括:第一写入单元、计算单元和第二写入单元;
第一写入单元用于将文件数量写入压缩包的文件数量区,并将每个写入文件的文件信息写入压缩包的文件信息区;
计算单元用于计算文件内容区、文件数量区、文件信息区和文件包信息区的大小总和,确定压缩包的文件包大小;
第二写入单元用于读取压缩包的文件包版本信息和文件包特性,并将压缩包的文件包大小、文件包版本信息和文件包特性写入压缩包的文件包信息区。
本发明第一实施例提供了一种压缩方法及装置,将待压缩文件按固定的大小分割成若干个文件块,将每个文件的文件块按顺序写入文件内容区,文件压缩后,将文件数量和文件信息分别存在压缩包的文件数量区和文件信息区,并将整个压缩包的有关信息存在文件包信息区,形成压缩包;本发明改进了压缩方法,可以快速清晰地得知压缩包内的文件内容和文件信息。
实施例2
如图2所示,是本发明提供的解压方法的一种实施例的流程示意图,该方法包括步骤201至步骤206,各步骤具体如下:
步骤201:获取待解压的第一压缩包;其中,所述第一压缩包按序依次设置有文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个待解压文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了第一压缩包的文件包版本信息、文件包特性和文件包大小。
步骤202:截取第一压缩包的文件数量区、文件信息区和文件包信息区,并将所述文件数量区、文件信息区和文件包信息区保存至内存中。
在本发明第二实施例中,解压压缩包时,先截取文件尾部大小固定的文件包信息区、文件信息区和文件数量区,将这三部分从文件包中分离出来保存到内存中,此时压缩包里只剩下文件内容,能减小压缩包所占用的存储或内存空间。
在本发明第二实施例中,压缩包的文件包信息区可以存放版本信息和文件特性,在做升级包中能直接根据此版本号或文件特性来判断升级包是否符合升级要求。其中,文件特性可灵活定义,可以是升级目标设备型号,也可以是额外的校验码等。
步骤203:在第一压缩包的文件信息区读取每个待解压文件的大小和偏移位置。
步骤204:根据所述每个待解压文件的大小和偏移位置,在第一压缩包的文件内容区逐个截取待解压文件,解压第一压缩包内的所有待解压文件。
步骤205:对每个解压后文件进行解密处理,并将每个解压后文件保存在目标文件中。
在本发明第二实施例中,压缩包内有多个文件时,先在文件信息区读取每个文件的大小,再从文件末尾往前逐个截取,从文件信息区尾部向前遍历文件信息,根据文件大小和偏移位置依次截取文件内容保存到文件信息中名称字段命名的目标文件中。截取每个文件,按压缩时的文件块大小从后往前截取,每截取一个文件块,就将截取到的内容做解密处理,并写入目标文件,同时压缩包会释放相应大小的内存,节省存储空间。
步骤206:对每个解压后文件做MD5码检验。
在本发明第二实施例中,对每个解压后文件做MD5码检验,具体为:
若MD5校验成功,则确定解压后文件完整;
若MD5校验失败,则停止文件截取,删除已截取文件和未截取完成的文件,释放内存空间。
在本发明第二实施例中,从文件包中截取完一个文件,会使用MD5算法检验文件的完整性,若MD5码校验成功,则证明该文件完整;若MD5码校验失败,则说明该文件包已经损坏,文件截取将终止,删除已截取的文件和未截取完的文件包释放空间。
作为本发明第二实施例的一种举例,如图5所示,是本发明提供的解压方法的一种实施例的示意图。压缩包从开始位置到末尾可以分成文件内容区、文件数量区、文件信息区和文件包信息区。以含有两个文件的压缩包为例,开始解压时,先截取文件尾部大小固定的文件包信息区、文件信息区和文件数量区。将截取出的文件包信息区、文件信息区和文件数量区从压缩包中分离出来保存到内存中,压缩包中只剩下文件内容,能节省内存空间。
作为本发明第二实施例的一种举例,如图6所示,是本发明提供的解压方法的一种实施例的示意图。截取文件内容时,从文件信息区尾部开始截取,根据文件大小和偏移位置依次进行截取,先截取出在文件信息区尾部的文件2,再截取文件1。每次截取一个文件时,由于打包时是按512KB块大小从文件尾部开始读取保存到文件包的,所以解包的时候是按512KB块大小从后往前截取,每截取一个文件块,文件包减小512KB。截取出文件后,先做解密处理,再写入目标文件,还原文件。
相应的,如图8所示,是本发明提供的解压装置的一种实施例的结构示意图,该装置包括获取模块401、截取模块402、读取模块403、解压模块404、解密模块405和校验模块406;
获取模块401用于获取待解压的第一压缩包;其中,所述第一压缩包按序依次设置有文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个待解压文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了第一压缩包的文件包版本信息、文件包特性和文件包大小;
截取模块402用于截取第一压缩包的文件数量区、文件信息区和文件包信息区,并将所述文件数量区、文件信息区和文件包信息区保存至内存中;
读取模块403用于在第一压缩包的文件信息区读取每个待解压文件的大小和偏移位置;
解压模块404用于根据所述每个待解压文件的大小和偏移位置,在第一压缩包的文件内容区逐个截取待解压文件,解压第一压缩包内的所有待解压文件;
解密模块405用于对每个解压后文件进行解密处理,并将每个解压后文件保存在目标文件中;
校验模块406用于对每个解压后文件做MD5码检验。
本发明第一实施例提供了一种解压方法及装置,在解压时,先在压缩包截取文件数量区、文件信息区和文件包信息区,将这三部分保存在内存里,再按顺序在文件内容区逐个截取文件,截取后的文件保存在目标文件中,每次在压缩包里截取内容,压缩包的大小可以相应减小,压缩包所占用的存储或内存空间也会减小;在解压完成后再使用MD5检验,保证解压后文件的完整性。
综上,本发明在解包过程中,源文件包大小按指定块截取,源文件包在减小到完全解完,源文件大小会变成零,解决了在解包后保留源文件而导致占用多一个源文件大小的Flash或内存空间问题,更大限度的节省存储或内存资源。而且,本发明的压缩包包含每个文件的MD5码,解包后能实现对每个解出来的文件做MD5完整性校验,实现了解包后能判断文件的是否完好,解决因文件包某些位改变能正常解压,实际上文件已经损坏而不能察觉。本发明可以应用在需要系统固件升级或4G/5G模块升级的网关上,同时网关Flash和内存空间只能存下升级包大小,能以不保留源文件包方式实现解压而又不会另外占用源文件包一样大小的Flash或内存空间。同时,并发明还实现多个升级包合并成一个且在解包后具备MD5校验能力。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种压缩方法,其特征在于,包括:
确定每个待压缩文件的大小;
将每个待压缩文件以预设的大小切割成若干个文件块;
逐个读取每个待压缩文件的若干个文件块,并将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息;
待所有待压缩文件的文件块都被写入压缩包的文件内容区后,生成压缩包;其中,所述压缩包按序依次设置有所述文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了压缩包的文件包版本信息、文件包特性和文件包大小。
2.根据权利要求1所述的压缩方法,其特征在于,所述将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息,具体为:
将每个待压缩文件的文件块写入压缩包的文件内容区,形成若干个写入文件;
记录每个写入文件在压缩包的位置,确定每个写入文件的偏移位置;
确定每个写入文件的大小为对应的待压缩文件的大小。
3.根据权利要求1所述的压缩方法,其特征在于,所述待所有待压缩文件的文件块都被写入压缩包的文件内容区后,具体为:
将文件数量写入压缩包的文件数量区,并将每个写入文件的文件信息写入压缩包的文件信息区;
计算文件内容区、文件数量区、文件信息区和文件包信息区的大小总和,确定压缩包的文件包大小;
读取压缩包的文件包版本信息和文件包特性,并将压缩包的文件包大小、文件包版本信息和文件包特性写入压缩包的文件包信息区。
4.根据权利要求3所述的压缩方法,其特征在于,所述将每个写入文件的文件信息写入压缩包的文件信息区,具体为:
读取每个写入文件的类型、版本和名称;
利用MD5算法获取每个写入文件的md5sum;
根据每个写入文件的位置偏移信息,获取每个写入文件的偏移位置和大小;
根据每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,生成每个写入文件的文件信息;
获取所有写入文件的文件信息,将每个写入文件的文件信息写入压缩包的文件信息区。
5.根据权利要求1所述的压缩方法,其特征在于,所述将每个待压缩文件以预设的大小切割成若干个文件块,具体为:
按预设的大小从每个文件的末尾向前依次切割,形成若干个文件块,并将所述若干个文件块做加密处理。
6.一种解压方法,其特征在于,包括:
获取待解压的第一压缩包;其中,所述第一压缩包按序依次设置有文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个待解压文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了第一压缩包的文件包版本信息、文件包特性和文件包大小;
截取第一压缩包的文件数量区、文件信息区和文件包信息区,并将所述文件数量区、文件信息区和文件包信息区保存至内存中;
在第一压缩包的文件信息区读取每个待解压文件的大小和偏移位置;
根据所述每个待解压文件的大小和偏移位置,在第一压缩包的文件内容区逐个截取待解压文件,解压第一压缩包内的所有待解压文件;
对每个解压后文件进行解密处理,并将每个解压后文件保存在目标文件中;
对每个解压后文件做MD5码检验。
7.根据权利要求6所述的解压方法,其特征在于,所述对每个解压后文件做MD5码检验,具体为:
若MD5校验成功,则确定解压后文件完整;
若MD5校验失败,则停止文件截取,删除已截取文件和未截取完成的文件,释放内存空间。
8.一种压缩装置,其特征在于,包括:确定模块、切割模块、写入模块和生成模块;
所述确定模块用于确定每个待压缩文件的大小;
所述切割模块用于将每个待压缩文件以预设的大小切割成若干个文件块;
所述写入模块用于逐个读取每个待压缩文件的若干个文件块,并将读取到的文件块写入压缩包的文件内容区,生成每个写入文件在文件内容区中所对应的位置偏移信息;
所述生成模块用于待所有待压缩文件的文件块都被写入压缩包的文件内容区后,生成压缩包;其中,所述压缩包按序依次设置有所述文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个写入文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了压缩包的文件包版本信息、文件包特性和文件包大小。
9.根据权利要求8所述的压缩装置,其特征在于,所述生成模块,包括:第一写入单元、计算单元和第二写入单元;
所述第一写入单元用于将文件数量写入压缩包的文件数量区,并将每个写入文件的文件信息写入压缩包的文件信息区;
所述计算单元用于计算文件内容区、文件数量区、文件信息区和文件包信息区的大小总和,确定压缩包的文件包大小;
所述第二写入单元用于读取压缩包的文件包版本信息和文件包特性,并将压缩包的文件包大小、文件包版本信息和文件包特性写入压缩包的文件包信息区。
10.一种解压装置,其特征在于,包括:获取模块、截取模块、读取模块、解压模块、解密模块和校验模块;
所述获取模块用于获取待解压的第一压缩包;其中,所述第一压缩包按序依次设置有文件内容区、文件数量区、文件信息区和文件包信息区;所述文件信息区记录了每个待解压文件的类型、版本、名称、md5sum、偏移位置和大小,所述文件包信息区记录了第一压缩包的文件包版本信息、文件包特性和文件包大小;
所述截取模块用于截取第一压缩包的文件数量区、文件信息区和文件包信息区,并将所述文件数量区、文件信息区和文件包信息区保存至内存中;
所述读取模块用于在第一压缩包的文件信息区读取每个待解压文件的大小和偏移位置;
所述解压模块用于根据所述每个待解压文件的大小和偏移位置,在第一压缩包的文件内容区逐个截取待解压文件,解压第一压缩包内的所有待解压文件;
所述解密模块用于对每个解压后文件进行解密处理,并将每个解压后文件保存在目标文件中;
所述校验模块用于对每个解压后文件做MD5码检验。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310086429.6A CN116069742B (zh) | 2023-01-18 | 2023-01-18 | 一种压缩和解压方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310086429.6A CN116069742B (zh) | 2023-01-18 | 2023-01-18 | 一种压缩和解压方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116069742A true CN116069742A (zh) | 2023-05-05 |
CN116069742B CN116069742B (zh) | 2023-10-03 |
Family
ID=86171197
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310086429.6A Active CN116069742B (zh) | 2023-01-18 | 2023-01-18 | 一种压缩和解压方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116069742B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503165A (zh) * | 2016-10-31 | 2017-03-15 | 杭州华为数字技术有限公司 | 压缩、解压方法、装置以及设备 |
CN109582653A (zh) * | 2018-11-14 | 2019-04-05 | 网易(杭州)网络有限公司 | 文件的压缩、解压缩方法及设备 |
CN112506878A (zh) * | 2020-12-17 | 2021-03-16 | 深圳市欢太科技有限公司 | 文件处理方法、装置、存储介质及电子设备 |
CN113271363A (zh) * | 2021-06-17 | 2021-08-17 | 南京金盾公共安全技术研究院有限公司 | 网络文件数据安全分发方法及系统 |
-
2023
- 2023-01-18 CN CN202310086429.6A patent/CN116069742B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106503165A (zh) * | 2016-10-31 | 2017-03-15 | 杭州华为数字技术有限公司 | 压缩、解压方法、装置以及设备 |
CN109582653A (zh) * | 2018-11-14 | 2019-04-05 | 网易(杭州)网络有限公司 | 文件的压缩、解压缩方法及设备 |
CN112506878A (zh) * | 2020-12-17 | 2021-03-16 | 深圳市欢太科技有限公司 | 文件处理方法、装置、存储介质及电子设备 |
CN113271363A (zh) * | 2021-06-17 | 2021-08-17 | 南京金盾公共安全技术研究院有限公司 | 网络文件数据安全分发方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN116069742B (zh) | 2023-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8898351B2 (en) | Dynamic compression of an I/O data block | |
CN111897846B (zh) | 缓存数据校验方法、装置、设备及存储介质 | |
CN110022558B (zh) | 一种升级包的加密、解密方法和电子装置及存储介质 | |
CN107870727B (zh) | 用于存储数据的方法和设备 | |
CN108667917B (zh) | 一种实现数据存储的方法、装置、计算机存储介质及终端 | |
KR20150125012A (ko) | 저장된 데이터 유닛들의 동작 관리 | |
US7013392B1 (en) | File processing unit | |
CN107203331B (zh) | 写数据的方法及装置 | |
CN107291485B (zh) | 动态链接库的加固方法、运行方法、加固装置和安全系统 | |
KR20150125010A (ko) | 저장된 데이터 유닛들의 동작 관리 | |
US20160055169A1 (en) | Creating a universally deduplicatable archive volume | |
CN108874584B (zh) | 数据备份方法、数据还原方法、装置、设备及存储介质 | |
CN110321082B (zh) | 用于计算机的数据清除方法及设备 | |
KR102275240B1 (ko) | 저장된 데이터 유닛들의 동작 관리 | |
CN116069742B (zh) | 一种压缩和解压方法及装置 | |
CN110826099A (zh) | 适用于嵌入式实时操作系统的安全存储方法及系统 | |
JP5664318B2 (ja) | 仮想ファイルシステム | |
CN117130841A (zh) | 调试信息的输出方法、装置、设备及介质 | |
CN102360381B (zh) | 一种对嵌入式程序进行无损压制的装置和方法 | |
CN111159740A (zh) | 一种数据加密存取方法、装置、设备及可读存储介质 | |
CN112800004B (zh) | 一种车牌算法库的控制方法、装置、设备和介质 | |
JPH06290087A (ja) | 圧縮暗号化装置 | |
US8516212B2 (en) | Data processing apparatus, computer program therefor, and data processing method | |
CN111309526A (zh) | 文件备份、恢复方法及其装置 | |
CN118036048B (zh) | 一种在线调试平台的数据持久化方法、装置及计算机介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 510000 room 1301, No. 37, Jinlong street, Xiangjiang financial and business center, Nansha District, Guangzhou City, Guangdong Province (office only) Patentee after: Guangzhou Tongze Kangwei Technology Co.,Ltd. Address before: 510000 room 1301, No. 37, Jinlong street, Xiangjiang financial and business center, Nansha District, Guangzhou City, Guangdong Province (office only) Patentee before: Guangzhou Tongze Kangwei Intelligent Technology Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |