压缩、解压gzip格式文件的方法、装置及存储介质与流程

文档序号:15399787发布日期:2018-09-11 17:12阅读:255来源:国知局

本发明涉及计算机领域,特别涉及一种压缩、解压gzip文件格式的方法、装置及可读存储介质。



背景技术:

gzip格式文件广泛应用于windows系统和linux系统上,其后缀多采用为.gz。gzip格式也是internet上使用非常普遍的一种数据压缩格式,采用gzip编码可以改进web程序网络传输性能,让用户感受到更快的速度,gzip只是一种文件格式,由一到多个块组成。标准gzip文件包含三个部分,分别为头部分、数据部分和尾部分。其中头部分包括id1、id2、cm、flg、mtime、xfl、os、以及optionalpart,头部分的flg为标志位,其包含bit0set,bit1set,bit2set,bit3set,bit4set,bit5set,bit6set,bit7set。尾部分包括crc32和isize。根据标准gzip文件格式解压包含大量存储块的gzip文件时,只有解压完gzip文件中的当前存储块,才能知道当前存储块的大小以及在当前存储块之后是否还有后续存储块,这样只能逐一的解压gzip文件中的存储块,导致gzip文件的解压效率较低,其次,由于无法预先知道存储块的大小,因此也就不能并行执行存储块中的各解压缩环节,进而也导致gzip格式文件的解压效率。

因此,如何提高gzip格式文件的解压效率是本领域技术人员需要解决的问题。



技术实现要素:

本发明的目的在于公开一种压缩、解压gzip文件格式的方法、装置及存储介质,提高了gzip格式文件的解压效率。

为实现上述目的,本发明实施例公开了如下技术方案:

第一,本发明实施例公开了一种压缩gzip格式文件的方法,包括:

获取待压缩文件,并将所述待压缩文件进行压缩得到目标文件,在压缩结束后向所述目标文件尾部字段中写入存储块的目标信息,以在解压所述目标文件时能获知所述目标文件中的存储块的数量和各所述存储块的存储容量值。

第二,本发明实施例公开了一种解压gzip格式文件的方法,基于以上提到的压缩gzip格式文件的方法,包括:

获取目标文件中的存储块的目标信息;

确定所述目标信息中的存储块的数量和各所述存储块的存储容量值;

根据所述存储块的数量和各所述存储块的存储容量值同时对所述目标文件中的多个存储块进行解压缩。

优选的,所述根据所述存储块的数量和各所述存储块的存储容量值同时对所述目标文件中的多个存储块进行解压缩包括:

判断所述存储块的数量是否小于设定阈值;

若是,则根据各所述存储块的存储容量值同时对所述目标文件中的所有的存储块进行解压缩;

若否,则从各所述存储块中选取多个目标存储块并根据各所述存储块的存储容量值同时对各所述目标存储块进行解压缩。

优选的,所述从各所述存储块中选取多个目标存储块并根据各所述存储块的存储容量值同时对各所述目标存储块进行解压缩包括:

将各所述存储块按照所述存储容量值由小到大进行排序;

从最小的存储容量值对应的存储块开始,从各所述存储块中选取与设定阈值相同数量的存储块作为所述目标存储块,直到剩余的存储块的数量小于所述设定阈值;

根据各所述存储块的存储容量值同时对各所述目标存储块进行解压缩。

优选的,所述从各所述存储块中选取多个目标存储块并根据各所述存储块的存储容量值同时对各所述目标存储块进行解压缩包括:

从各所述存储容量值中选取最大值;

从各所述存储块中选取存储容量值与所述最大值相同的存储块;

将所述存储容量值与所述最大值相同的存储块作为所述目标存储块并同时对各所述目标存储块进行解压缩。

优选的,所述根据各所述存储块的存储容量值同时对各所述目标存储块进行解压缩包括:

从所述目标信息中确定起始存储块的存储容量值;

根据所述起始存储块的存储容量值以及其余存储块的存储容量值确定各所述目标存储块的解压缩位置;

根据各所述解压缩位置同时对各所述目标存储块进行解压缩。

第三,本发明实施例公开了一种压缩gzip格式文件的装置,包括:

压缩模块,用于获取待压缩文件,并将所述待压缩文件进行压缩得到目标文件,在压缩结束后向所述目标文件尾部字段中写入存储块的目标信息,以在解压所述目标文件时能获知所述目标文件中的存储块的数量和各所述存储块的存储容量值。

第四,本发明实施例公开了一种解压gzip格式文件的装置,包括:

目标信息获取模块,用于获取目标文件中的存储块的目标信息;

存储块数量确定模块,用于确定所述目标信息中存储块的数量和各所述存储块的存储容量值;

解压缩模块,用于根据所述存储块的数量和各所述存储块的存储容量值以同时对所述目标文件中的多个存储块进行解压缩。

第五,本发明实施例公开了另一种解压gzip格式文件的装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述存储器中存储的计算机程序以实现如上任一项所述的解压gzip格式文件的方法的步骤。

第六,本发明实施例公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上任一项所述的解压gzip格式文件的方法的步骤。

可见,本发明公开的一种压缩gzip格式文件的方法,通过获取待压缩文件,并将待压缩文件进行压缩得到目标文件,在压缩结束后向目标文件尾部字段中写入存储块的目标信息,以在解压目标文件时能获知目标文件中的存储块的数量和各存储块的存储容量值。因此,在压缩后的目标文件的尾部字段写入存储块的目标信息,从而使得压缩后的目标文件中的存储块的数量和各存储块的大小都是已知的。基于压缩后的gzip格式文件,本发明公开的一种解压gzip格式文件的方法,首先获取目标文件中的存储块的目标信息,然后确定目标信息中的存储块的数量和各存储块的存储容量值,最后根据存储块的数量和各存储块的存储容量值对目标文件中的多个存储块进行解压缩。因此,预先将目标文件中的存储块的数量和各存储块的存储容量值存储于目标文件的尾部字段,从而在解压目标文件时,由于能获取到目标文件中的存储块的数量和各存储块的存储容量值,从而能对目标文件中的多个存储块同时进行解压缩,相比于现有技术中对目标文件中的存储块逐一的进行解压缩的方式,本发明公开的方法显著缩短了目标文件的解压时间,提高了目标文件的解压效率。此外,本发明还公开了一种压缩gzip格式文件的装置、解压gzip格式文件的装置及存储介质,效果如上。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例公开的一种压缩gzip文件格式的方法流程示意图;

图2为本发明实施例公开的一种gzip格式文件的尾部字段中各存储块的存储关系示意图;

图3为本发明实施例公开的一种解压gzip格式文件的方法流程示意图;

图4为本发明实施例公开的一种压缩gzip格式文件的装置结构示意图;

图5为本发明实施例公开的一种解压gzip格式文件的装置结构示意图;

图6为本发明实施例公开的另一种解压gzip格式文件的装置结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例公开了一种压缩、解压gzip文件格式的方法、装置及存储介质,提高了gzip格式文件的解压效率。

请参见图1,图1为本发明实施例公开的一种压缩gzip文件格式的方法流程示意图,该方法包括:

s101、获取待压缩文件,并将待压缩文件进行压缩得到目标文件。

具体的,本实施例中待压缩文件的压缩方式与现有技术中的压缩方式类同,本发明实施例在此不再详细赘述。

s102、在压缩结束后向目标文件尾部字段中写入存储块的目标信息,以在解压目标文件时能获知目标文件中的存储块的数量和各存储块的存储容量值。

具体的,本实施例中,目标文件的尾部字段主要包括两个部分,依次为crc32和isize,其中,crc32和isize都为4字节,crc32中存储原始(未压缩)数据的32位校验和,isize中存储原始(未压缩)数据的长度的低32位。将待压缩文件进行压缩得到各个存储块的压缩缓存信息,在压缩完成得到目标文件后,再在目标文件的尾部字段中存储存储块的数量和各存储块的存储容量值,存储过程为:首先是在isize之后先依次存入各个存储块的存储容量值,然后,在最后一个n字节中存入存储块的数量。本实施例中,存储块的数量和各存储块的存储容量值本发明实施例在此并不作限定。其次,在尾部字段的isize之后的区域存储各存储块的存储容量值和存储块的数量的每一个存储空间可以均设置为4字节,当然,根据实际情况,每一个存储空间也可以为6字节、8字节等,每一个存储空间的大小具体为多少合适,本发明实施例在此并不作限定。

为了更好的说明本发明实施例中尾部字段存储各存储块的目标信息的步骤,本发明实施例提供了图2,图2为本发明实施例公开的一种gzip格式文件的尾部字段中各存储块的存储关系示意图,其中,crc32和isize为尾部字段,size-1至size-n为依次存储各存储块的存储区域,n为存储有存储块的数量的存储区域,其中,size-1至size-n以及n的存储区域的大小可以为4字节、6字节、8字节等,具体采用多少字节的存储区域来存储各存储块的存储容量值和存储块的数量以实际情况为准,本发明实施例在此并不作限定。

可见,本发明实施例公开的一种压缩gzip格式文件的方法,通过获取待压缩文件并将待压缩文件进行压缩得到目标文件后向目标文件的尾部字段中写入存储块的目标信息,以使在解压目标文件时能获知目标文件中的存储块的数量和各存储块的存储容量值。因此,在将待压缩文件进行压缩后得到的目标文件的尾部字段中写入存储块的目标信息,从而使得压缩后的目标文件中的存储块的数量和各存储块的大小都是已知的以使在解压目标文件时能获知目标文件中的存储块的数量和各存储块的存储容量值。

上文提到了一种压缩gzip格式文件的方法,从而得到写有待压缩文件中的存储块的数量和各存储块的存储容量值的目标文件。因此,针对该压缩后的目标文件,本发明实施例公开了一种解压gzip格式文件的方法,请参见图3,图3为本发明实施例公开的一种解压gzip格式文件的方法流程示意图,该方法包括:

s301、获取目标文件中的存储块的目标信息。

具体的,本实施例中,目标文件为压缩后得到的gzip格式的文件,本发明实施例中的gzip格式的文件“完全兼容gzip文件格式标准,该标准是一个国际标准,因此,基于该标准,在满足gzip文件格式标准的要求等诸多限制规则的前提下,向压缩后的gzip格式的文件中的尾部字段添加存储块的数量和各存储块的大小值。存储块的目标信息包括目标文件中所有存储块的数量和每个存储块的存储容量值,每个存储块的存储容量值即为每个存储块的大小值。在获取目标文件中的存储块的目标信息时,是直接获取isize后面的存储区域中存储的数据。

s302、确定目标信息中的存储块的数量和各存储块的存储容量值。

具体的,本实施例中,在获取到目标文件的尾部字段中的目标信息后,依次确定各存储块的存储容量值以及存储块的数量。

s303、根据所述存储块的数量和各所述存储块的存储容量值同时对所述目标文件中的多个存储块进行解压缩。

具体的,本实施例中,根据存储块的数量和各存储块的大小同时对目标文件中的多个存储块进行解压缩包括两种情况:第一种,即对目标文件中的所有的存储块同时进行解压缩;第二种,先从多个存储块中选择一定数量的存储块,同时对一定数量的存储块进行解压缩,直到所有的存储块都被解压缩。从多个存储块中选择一定数量的存储块可以按照压缩时存储块的顺序依次选取,也可以错序选取多个存储块。例如,按照存储块的顺序选择存储至isize后的前3个存储区域的存储容量值对应的存储块先进行解压缩,依次类推。当然,上述例子只是多个选择方式中的一种,下面将对各种选择方式进行详细说明。

需要说明的是,对目标文件中的存储块进行解压缩时,先将解压缩后的存储块放至缓存中,待所有的存储块都被解压缩后,则将缓存中的解压后的数据进行释放,完成整个解压过程。

进一步,本发明实施例中尾部字段中的存储各存储块大小值的存储区域和各存储块之间一一对应,确认各存储块大小值的存储区域和各存储块之间的对应关系可以通过唯一标识区分,其中,唯一标识的设定可以有以下方式:给各存储块进行编号,如存储块为5个,依次给5个存储块进行编号为存储块1、存储块2、存储块3、存储块4、存储块5;给存储各存储块的存储区域进行编号,即存有存储块1的存储区域为1,存有存储块2的存储区域为2,依次类推。如此,便可知道每个存储区域中存储的存储块的存储容量值对应的存储块。

可见,本发明实施例公开的一种解压gzip格式文件的方法,在解压目标文件时,由于能获取到目标文件中的存储块的数量和存储块的存储容量值,从而能对目标文件中的多个存储块同时进行解压缩,相比于现有技术中对目标文件中的存储块逐一的进行解压缩的方式,本发明公开的方法显著缩短了目标文件的解压时间,提高了目标文件的解压效率。

基于上述实施例,作为优选的实施例,根据存储块的数量和各存储块的存储容量值同时对目标文件中的多个存储块进行解压缩包括:

判断存储块的数量是否小于设定阈值;

若是,则根据各存储块的存储容量值同时对目标文件中的所有的存储块进行解压缩;

若否,则从各存储块中选取多个目标存储块并根据各存储块的存储容量值同时对各目标存储块进行解压缩。

具体的,本实施例中,设定阈值为操作人员预先设定的,设定阈值的大小可以根据整个gzip解压应用的实际功能进行确定,其可以为当前解压条件允许的最大并行解压数。最大并行解压数根据gzip解压应用的性能进行确定,因此,本发明实施例对设定阈值的大小并不作限定。在获取到存储块的数量后,先判断存储块的数量是否小于设定阈值,在小于设定阈值的情况下,则对所有的存储块同时进行解压缩。若不小于设定阈值,则从各存储块中选取多个存储块以先同时对选取的多个存储块进行解压缩。目标存储块为当前需要进行解压缩的存储块。

基于上述实施例,作为优选的实施例,从各存储块中选取多个目标存储块并根据各存储块的存储容量值同时对各目标存储块进行解压缩包括:

将各存储块按照存储容量值由小到大进行排序;

从最小的存储容量值对应的存储块开始,从各存储块中选取与设定阈值相同数量的存储块作为目标存储块,直到剩余的存储块的数量小于设定阈值;

根据各存储块的存储容量值同时对各目标存储块进行解压缩。

具体的,本实施例中,根据存储于isize后存储的各存储块的存储容量值将各存储块按照由小到大的顺序排序,从存储容量值为最小值的存储块开始选择数量与设定阈值相同的存储块作为目标存储块,并对这些目标存储块进行解压缩,如此循环,直到剩余的存储块的数量小于设定阈值时,直接对剩余的所有的存储块进行解压缩。当然,从各存储块中选取目标存储块的数量也可以为其他数量,本发明实施例并不局限于设定阈值这一种方式。

基于上述实施例,作为优选的实施例,从各存储块中选取多个目标存储块并根据各存储块的存储容量值同时对各目标存储块进行解压缩包括:

从各存储容量值中选取最大值;

从各存储块中选取存储容量值与最大值相同的存储块;

将存储容量值与最大值相同的存储块作为目标存储块并同时对各目标存储块进行解压缩。

具体的,本实施例中,确定存储于目标文件尾部字段中的所有存储容量值中的最大值,然后,然后确定存储容量值与最大值相同的存储块作为目标存储块。当然,本实施例中,也可以选取从各存储容量值中选取最小值,然后从各存储块中选取存储容量值与最小值相同的存储块,将存储容量值与最小值相同的存储块作为目标存储块并同时对各目标存储块进行解压缩。

基于上述实施例,作为优选的实施例,根据各存储块的存储容量值同时对各目标存储块进行解压缩包括:

从目标信息中确定起始存储块的存储容量值;

根据起始存储块的存储容量值以及其余存储块的存储容量值确定各目标存储块的解压缩位置;

根据各解压缩位置同时对各目标存储块进行解压缩。

具体的,本实施例中,确定存储于isize后的第一个存储块的大小后,isize后的第一个存储块即为起始存储块,确定第一个存储块的大小后,便根据isize的第一个存储区域后其余存储区域存储的存储块的大小计算出各个存储块的解压缩位置,从而能同时对各个存储块进行解压缩。

请参见图4,图4为本发明实施例公开的一种压缩gzip格式文件的装置结构示意图,包括:

压缩模块401,用于获取待压缩文件,并将待压缩文件进行压缩得到目标文件。

目标信息写入模块402,用于在压缩结束后向目标文件尾部字段中写入存储块的目标信息,以在解压目标文件时能获知目标文件中的存储块的数量和各存储块的存储容量值。

可见,本发明实施例公开的一种压缩gzip格式文件的装置,通过获取待压缩文件并将待压缩文件进行压缩得到目标文件后向目标文件的尾部字段中写入存储块的目标信息,以使在解压目标文件时能获知目标文件中的存储块的数量和各存储块的存储容量值。因此,在将待压缩文件进行压缩后得到的目标文件的尾部字段中写入存储块的目标信息,从而使得压缩后的目标文件中的存储块的数量和各存储块的大小都是已知的以使在解压目标文件时能获知目标文件中的存储块的数量和各存储块的存储容量值。

请参见图5,图5为本发明实施例公开的一种解压gzip格式文件的装置结构示意图,该装置包括:

目标信息获取模块501,用于获取目标文件中的存储块的目标信息;

存储块数量确定模块502,用于确定目标信息中存储块的数量和各存储块的存储容量值;

解压缩模块503,用于根据存储块的数量和各存储块的存储容量值以同时对目标文件中的多个存储块进行解压缩。

可见,本发明实施例公开的一种解压gzip格式文件的装置,在解压目标文件时,由于能获取到目标文件中的存储块的数量和存储块的存储容量值,从而能对目标文件中的多个存储块同时进行解压缩,相比于现有技术中对目标文件中的存储块逐一的进行解压缩的方式,本发明公开的方法显著缩短了目标文件的解压时间,提高了目标文件的解压效率。

图6为本发明实施例公开的另一种解压gzip格式文件的装置结构示意图,包括:

存储器601,用于存储计算机程序。

处理器602,用于执行所述存储器中存储的计算机程序以实现以上任一实施例提到的解压gzip格式文件的方法的步骤。

本发明实施例公开的另一种解压gzip格式文件的装置,具有与一种解压gzip格式文件的方法同样的技术效果,本实施例在此不再详细赘述。

为了更好地理解本方案,本发明实施例公开的一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上任一实施例提到的解压gzip格式文件的方法的步骤。

本发明实施例公开的一种计算机可读存储介质,具有与一种解压gzip格式文件的方法同样的技术效果,本实施例在此不再详细赘述。

以上对本申请所公开的一种压缩、解压gzip文件格式的方法、装置及存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1