CN110888851A - 压缩文件创建和解压的方法及装置、以及电子和存储设备 - Google Patents

压缩文件创建和解压的方法及装置、以及电子和存储设备 Download PDF

Info

Publication number
CN110888851A
CN110888851A CN201810930100.2A CN201810930100A CN110888851A CN 110888851 A CN110888851 A CN 110888851A CN 201810930100 A CN201810930100 A CN 201810930100A CN 110888851 A CN110888851 A CN 110888851A
Authority
CN
China
Prior art keywords
compressed
data segment
file
compressed data
data
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
Application number
CN201810930100.2A
Other languages
English (en)
Other versions
CN110888851B (zh
Inventor
张峰豪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810930100.2A priority Critical patent/CN110888851B/zh
Publication of CN110888851A publication Critical patent/CN110888851A/zh
Application granted granted Critical
Publication of CN110888851B publication Critical patent/CN110888851B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请公开一种压缩文件的创建方法和装置,以及一种压缩文件的解压方法和装置,以及电子设备和存储设备,其中,所述压缩文件的创建方法包括:对源文件进行划分,获得至少两个划分后的源数据段;对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录每个压缩数据段的长度;将所述压缩数据段的长度按照压缩顺序组合为数据映射表;根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。该创建方法能够提高创建压缩文件的高效性、灵活性,且降低内存使用量。

Description

压缩文件创建和解压的方法及装置、以及电子和存储设备
技术领域
本申请涉及计算机应用技术,具体涉及一种压缩文件的创建方法和压缩文件的创建装置,以及一种压缩文件的解压方法和压缩文件的解压装置,以及电子设备和存储设备。
背景技术
传统的分布式块存储采用三副本存储,其存储成本是用户数据量的三倍,在云计算高速发展的今天,成本控制成为企业重要的指标,低成本同样有助于吸引更多的客户占领更多的市场。
存储成本的控制通常情况下是通过对文件进行压缩处理进而减少存储空间,节约存储成本。现有技术中,通常文件压缩方法都是基于“滑动窗口压缩”完成文件压缩,该压缩方法的过程是:当压缩一个文件时,从前往后读取数据的同时进行压缩,后压缩数据对先压缩数据具有一定的依赖性,即:后压缩数据需要根据先前的压缩数据的特点对自身数据进行编码,直到整个文件压缩处理完毕。该种压缩方式存在的缺陷是:
1)灵活性差:文件作为一个压缩整体出现,即在对文件进行压缩处理时,仅能够将所有数据全部压缩,且压缩算法只能选择一种,进而使得压缩方式不灵活;
2)解压性能差:假如一个压缩文件的长度为100MB,当读取第100MB位置的一个字节时,需要将整个文件全部解压,从全部解压文件中查找100MB的字节,进而导致解压性能差;
3)数据可靠性差:同上述2),一个100MB的压缩文件,假如压缩文件仅一个字节损坏或部分内容损坏,该种压缩方式将导致整个压缩文件的解压出现失败,导致无法获得数据。
发明内容
本申请提供一种压缩文件的创建方法,以解决现有技术中压缩方法不灵活的问题。本申请另外提供一种压缩文件的解压方法,以解决现有技术中解压性能和数据可靠性差的问题。
本申请提供一种压缩文件的创建方法,包括:
对源文件进行划分,获得至少两个划分后的源数据段;
对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录每个压缩数据段的长度;
将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
在一些实施例中,还包括:创建用于描述压缩数据段属性信息的压缩数据段头部;
所述将压缩数据段的长度按照压缩顺序组合为数据映射表包括:
计算压缩数据段与压缩数据段头部的长度和,将所述长度和按照压缩顺序组合为数据映射表;
所述根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件,包括:
根据所述压缩数据段头部、所述压缩数据段以及所述数据映射表,生成对应于所述源文件的压缩文件。
在一些实施例中,所述压缩数据段属性信息包括至少如下一种信息:所述压缩数据段头部的校验值,所述压缩数据段对应的压缩算法的信息,所述压缩数据段中的压缩数据的校验值,所述压缩数据段的长度,所述压缩数据段格式的识别信息,所述压缩数据段的版本信息。
在一些实施例中,所述根据所述压缩数据段头部、压缩数据段以及所述数据映射表,生成对应于所述源文件的压缩文件,包括:
根据所述压缩顺序,将所述压缩数据段头部与对应的所述压缩数据段作为压缩数据块放入空白文件中;
将所述数据映射表放置在最末端的所述压缩数据块之后的空间,从而生成对应于所述源文件的压缩文件。
在一些实施例中,还包括:
创建用于描述所述数据映射表的数据映射表属性信息,并添加到所述压缩文件的尾部。
在一些实施例中,所述数据映射表属性信息包括至少如下一种信息:所述数据映射表的长度信息,所述数据映射表的校验值,所述压缩文件的版本信息,所述压缩文件格式识别信息。
在一些实施例中,所述对源文件进行划分,获得至少两个划分后的源数据段,包括:
根据源文件的大小确定分段长度;
根据所确定的分段长度,对所述源文件进行划分,获得划分后的源数据段。
本申请还提供一种
压缩文件的创建装置,包括:
划分单元,用于对源文件进行划分,获得至少两个划分后的源数据段;
压缩单元,用于对划分后的所述源数据段分别进行压缩处理,得到对应所述源数据段的压缩数据段,并记录压缩数据段的长度;
创建单元,用于将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
生成单元,根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
本申请还提供一种压缩文件的解压方法,包括:
获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件;所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
在一些实施例中,所述数据映射表具体是根据所述压缩数据段和对应的压缩数据段头部的长度和,按照压缩顺序进行组合得到;所述压缩数据段头部用于描述压缩数据段属性信息。
在一些实施例中,所述根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段,包括:
确定所述数据映射表在所述压缩文件中的位置;
根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置;
将所述压缩数据段的偏移位置对应的所述压缩数据段确定为所述待解压的压缩数据段。
在一些实施例中,所述确定所述数据映射表在所述压缩文件中的位置,包括:
根据所述压缩文件尾部中用于描述所述数据映射表的数据映射表属性信息,读取所述数据映射表的长度;
根据所述数据映射表的长度计算所述数据映射表在所述压缩文件中的偏移位置;
根据所述数据映射表在所述压缩文件中的偏移位置,确定所述数据映射表在所述压缩文件中的位置。
在一些实施例中,所述根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的所述压缩数据段的偏移位置,包括:
获得所述源文件中待读取源数据段的偏移位置和长度;
根据所述待读取源数据段的偏移位置和长度,确定与所述待读取源数据段对应的压缩数据块在所述数据映射表中的位置,其中,所述压缩数据块包括压缩数据段头部和压缩数据段;
将所述压缩数据块在所述数据映射表中的位置之前的所有所述压缩数据块的长度和,确定为所述压缩文件中与所述待读取源数据段相对应的所述压缩数据块的偏移位置;
将所述压缩数据块的偏移位置确定为所述压缩文件中与所述源数据段对应的所述压缩数据段的偏移位置。
在一些实施例中,所述对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段,包括:
根据所述压缩数据块的偏移位置,读取用于描述所述待解压的压缩数据段属性信息的压缩数据段头部;
根据所述压缩数据段头部中的属性信息对所述压缩数据块中的所述待解压的压缩数据段进行解压处理,得到与所述待解压的压缩数据段对应的源数据段。
在一些实施例中,所述根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置,包括:
判断所述数据映射表是否损坏,若是,则恢复所述数据映射表;
根据恢复后的所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源文件的待读取所述源数据段对应的所述压缩数据段的偏移位置。
在一些实施例中,所述判断所述数据映射表是否损坏,包括:
根据所述压缩文件尾部中用于描述所述数据映射表的数据映射表属性信息,对所述数据映射表进行校验,根据校验结果确定所述数据映射表是否损坏。
在一些实施例中,所述恢复所述数据映射表,包括:
根据所述压缩文件的压缩顺序依次读取所述压缩数据段头部的长度和所述压缩数据段的长度;
将所述压缩数据段头部和对应的所述压缩数据段的长度和重写至所述数据映射表中,完成所述数据映射表的恢复。
在一些实施例中,所述根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置,包括:
根据所述数据映射表在所述压缩文件中的位置,将所述数据映射表加载到内存中;
根据所述内存中的所述数据映射表,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置。
在一些实施例中,当所述数据映射表损坏时,所述确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段,包括:
初始化文件指针的位置为第一个压缩数据段的头部;
根据所述文件指针所指的位置,读取用于描述所述压缩数据段属性信息的压缩数据段头部;
根据所述压缩数据段头部的长度和压缩数据段长度之和,确定下一个压缩数据段的位置,并移动所述文件指针指向下一个压缩数据段的位置;
判断所述文件指针当前的位置是否小于所述待读取源数据相对所述压缩数据段在所述压缩文件中的位置,若是,则按照所述压缩数据段的压缩顺序继续遍历所述压缩文件中的压缩数据段,直到所述文件指针当前的位置等于所述待读取源数据相对所述压缩数据段在所述压缩文件中的位置时,将所述文件指针当前所指的压缩数据段确定为所述待解压的压缩数据段。
在一些实施例中,所述对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段,包括:
根据所述文件指针所指位置,读取用于描述所述压缩数据段属性信息的压缩数据段头部;
根据所述压缩数据段头部的属性信息对所述压缩数据段进行解压处理,得到所述待解压的压缩数据段对应的源数据段。
在一些实施例中,所述根据所述压缩数据段头部的属性信息对所述压缩数据段进行解压处理,得到所述待解压的压缩数据段对应的源数据段,包括:
根据所述压缩数据段头部中的属性信息对所述待解压的压缩数据段进行压缩数据段校验;
校验结果正确时,根据所述压缩数据段头部中压缩算法的属性信息,对所述待解压的压缩数据段进行解压处理,得到所述待解压的压缩数据段对应的源数据段。
本申请还提供一种压缩文件的解压装置,包括:
获取单元,用于获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
确定单元,用于根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
解压单元,用于对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:
对源文件进行划分,获得至少两个划分后的源数据段;
对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录压缩数据段的长度;
将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
本申请还提供一种存储设备,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被所述处理器读取执行时,执行如下操作:
对源文件进行划分,获得至少两个划分后的源数据段;
对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录压缩数据段的长度;
将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:
获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
本申请还提供一种存储设备,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被所述处理器读取执行时,执行如下操作:
获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
与现有技术相比,本申请具有以下优点:
本申请提供的一种压缩文件的创建方法,通过将源文件划分成至少包括两个源数据段,之后依次对划分后的所述源数据段进行压缩处理,获得对应所述源数据段的压缩数据段,并记录每个所述压缩数据段的长度,之后将所述压缩数据段的长度按照压缩顺序组合得到数据映射表;根据压缩数据段和所述数据映射表生成对应所述源文件的压缩文件,在对源数据段进行压缩处理时可以针对同一源文件中不同源数据段,采用不同的压缩算法进行压缩。由于本申请创建的压缩文件采用分段压缩的方式,且将所述压缩数据段的长度按照压缩顺序组合得到数据映射表,进而能够提高创建压缩文件的高效性、灵活性,且降低内存使用量。
本申请提供的一种压缩文件的解压方法,通过获取的对应不同源数据段的压缩数据段和存储有各个压缩数据段长度的数据映射表,根据所述数据映射表中的记载的压缩数段长度,确定待解压压缩数据段在压缩文件中的位置,根据该位置通过解压即可获得对应的源数据段。由于本申请的解压方法中的压缩文件包括数据映射表与压缩数据段,因此,使得解压读取数据的过程更加快速,且解压时内存占用量较小。另外,本申请的解压方法可以仅对需要解压的压缩数据段进行解压获得对应的源数据段,在压缩文件中如果存在某一个或多个压缩数据段损坏的情况并不影响其他正常压缩数据段的解压读取操作,因此,本申请提供的解压方法数据容错能力更强,进一步能够提高读取数据的完整性和可用性。
附图说明
图1是本申请提供的一种压缩文件的创建方法实施例的流程图;
图2是本申请提供的一种压缩文件的创建方法中压缩文件的结构示意图;
图3是本申请提供的一种压缩文件的创建装置实施例的结构示意图;
图4是本申请提供的一种压缩文件的解压方法实施例的流程图;
图5是本申请提供的一种压缩文件的解压装置实施例的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
请参考图1所示,图1是本申请提供的一种压缩文件的创建方法实施例的流程图。本申请提供的一种压缩文件的创建方法实施例中包括:
步骤S101:对源文件进行划分,获得至少两个划分后的源数据段;
在对源文件进行压缩时,首先,需要对源文件进行划分,划分为至少两个源数据段,源数据段之间可以为彼此独立的关系。
在本实施中,对源文件的划分数量可以根据所述源文件的大小或者根据所述源文件的读取需求或者实际存储需求等进行设置,也可以根据源文件的大小和读取需求和存储需求等设置。
具体划分方式可以是,根据预设的连续字节数量对所述源文件进行连续划分,获得划分后的源数据段,其中,连续划分可以是根据所述源文件的数据内容的顺序进行的连续划分,换言之,划分后的每一个源数据段能够与前后源数据段的内容连接构成完成的源文件。例如:将源文件file根据每连续K字节划分成N个源数据段seg1,seg2,…segN,其中,K可根据用户读写文件大小的需求进行优化设置。
可以理解的是,按照预设的字节数量对所述源文件进行划分,当在划分到最后一个源数据段时,如果字节数量少于预先设置的字节数量,可以用0补足,进而保证划分的每一个源数据段的字节数量是一致的。
步骤S102:对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录每个压缩数据段的长度;
所述对划分后的所述源数据段分别进行压缩处理是指,对划分后的所述源数据段分别按照所述连续划分顺序依次进行压缩处理,进而得到对应所述源数据段的压缩数据段,即所述压缩数据段与所述源数据段的数量相同,例如:源文件划分为5个源数据段,那么压缩数据段也具有5个,且与所述源数据段对应。例如:划分后的源数据段为seg1,seg2,seg3,seg4,seg5,根据压缩处理后的压缩数据段获得每个压缩数据段的长度,即为Length1(seg1的长度),Length2(seg2的长度),Length3(seg3的长度),Length4(seg4的长度),Length5(seg5的长度)。
需要说明的是,本发明实施例对每个源数据段是独立压缩的,即后压缩的数据不依赖于前面数据的压缩结果。
步骤S103:将所述压缩数据段的长度按照压缩顺序组合为数据映射表。
所述步骤S103具体是指数据映射表的创建过程,根据步骤S102所获得的每个压缩数据段长度,例如:根据压缩顺序将Length1,Length2,Length3,Length4,Length5组合,存储到数据映射表中。其中,所述数据映射表可以采用数组来实现。
步骤S104:根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
所述步骤S104可以是基于划分后的所述源数据段,分别对每一个所述源数据段进行压缩,之后得到相对应的压缩数据段。根据所述压缩数据段和所述数据映射表生成对应于所述源文件的压缩文件的过程可以包括:
根据所述压缩数据段头部、所述压缩数据段以及所述数据映射表,生成对应于所述源文件的压缩文件。因此,本申请提供的压缩文件的创建方法还可以包括:创建用于描述压缩数据段属性信息的压缩数据段头部;例如:源数据段为seg1,seg2,seg3,seg4,seg5,压缩后的压缩数据段可以为seg1-1,seg2-2,seg3-3,seg4-4,seg5-5;压缩数据段头部可以为header1-1,header2-2,header3-3,header4-4,header5-5,其中header1-1对应seg1-1,header2-2对应seg2-2,header3-3对应seg3-3,seg4-4对应header4-4,seg5-5对应header5-5。其中,源数据段和压缩数据段均可以采用相同的表示形式,例如图2中均采用seg1,此处仅为避免出现混乱而采用了区分的表示形式。
而所述步骤S103中的将所述压缩数据段的长度按照压缩顺序组合而得到的数据映射表可以包括:
计算压缩数据段与压缩数据段头部的长度和,将所述长度和按照压缩顺序组合为数据映射表,即在所述数据映射表中存储压缩数据段的长度和对应的压缩数据段头部长度之和,例如:依次按照header1-1的长度加上seg1-1的长度,存储在所述数据映射表中。
所述压缩数据段头部用于描述压缩数据段的属性信息可以包括至少如下一种信息:
所述压缩数据段头部的校验值(HeaderCRC(C1)),所述压缩数据段对应的压缩算法的信息所述压缩数据段的长度(S),所述压缩数据段格式的识别信息(MagicNumber(M)),所述压缩数据段的版本信息(V:version)等等,其中,所述压缩数据段的压缩算法是为了对所述划分的源数据段进行压缩处理,所述压缩数据段头部的校验值C1是用来校验所述压缩数据段是否正确;所述压缩数据段的长度(S)是用来记录对应的所述压缩数据段的长度信息,所述压缩数据段格式的识别信息(MagicNumber(M))是用来识别对应的压缩数据段格式等等。
需要说明的是,所述压缩数据段头部中记录的描述压缩数据段的属性信息,除了对压缩数据段头部的校验值(HeaderCRC(C1))以外,还可以包括CRC2(C2),该C2是压缩前数据的校验值,用来校验划分源数据段在压缩前是否正确。
在所述压缩数据段头部包括上述压缩数据段属性信息的一种或多种,根据不同的需求读取所述压缩数据段头部属性信息,根据对所述压缩数据段头部记录的信息的读取获取关于压缩数据段相应的信息。
可以理解的是,根据所述压缩数据段属性信息中记录的信息,可以获知所述压缩数据段头部属于定长,因为,所述压缩数据段头部针对每一个压缩数据段记录的属性信息均相同,因此,压缩数据段头部本身长度是固定的,而且每个对应所述压缩数据段的压缩数据段头部长度也是相同的。所述压缩数据段在本实施例中属于变长。所谓变长则可以是指根据存储的压缩数据段的大小确定长度,即压缩数据段的长度根据其存储内容确定。
所述根据所述压缩数据段头部、所述压缩数据段以及数据映射表,生成对应所述源文件的压缩文件,目的在于,将每一个压缩数据段以及与其对应的压缩数据段头部作为一个整体,该整体对应所述源数据段的压缩数据段,也就是说,所述压缩数据段实际上包括两部分,一部分是压缩数据段头部,另一部分是压缩数据段,也可以将所述压缩数据段和压缩数据段头部看做为压缩数据块。根据压缩数据块和数据映射表生成对应的源文件的压缩文件。
本实施例中根据计算压缩数据段与压缩数据段头部的长度和,将所述长度和按照压缩顺序组合为数据映射表,可以采用如下方式:
根据与所述源文件的划分顺序相同的压缩顺序,依次将第一压缩数据段的长度与第一压缩数据段头部的长度之和,确定为第一源数据段在所述压缩文件中的位置;将第二压缩数据段的长度与第二压缩数据段头部的长度之和,确定为第二源数据段在所述压缩文件中的位置,以此类推;将所有压缩数据段和压缩数据段头部的长度和按照所述压缩顺序依次记录在所述数据映射表中,完成所述数据映射表的创建。
需要说明的是,上述对于创建所述数据映射表给出的实现过程是根据对于源文件划分至少为两个源数据段段时进行的描述,实际上,根据划分源数据段的数量,分别计算每一个压缩数据段头部长度和对应的压缩数据段长度之和,将二者之和作为所述压缩数据段在压缩文件中的位置,而所述压缩数据段的位置与所述源数据段的位置相对应。
根据上述内容在生成所述压缩文件时,可以根据所述压缩数据段头部、压缩数据段以及数据映射表生成对应所述源文件的压缩文件,具体生成的过程可以是,根据所述压缩顺序,将所述压缩数据段头部与对应的所述压缩数据段作为压缩数据块放入空白文件(即新创建一个文件)中;将所述数据映射表放置在最末端的所述压缩数据块之后的空间从而生成对应于所述源文件的所述压缩文件。换言之,所述压缩文件中包括:位于每个压缩数据段前端的、对应压缩数据段的压缩数据段头部,之后为压缩数据段以及在压缩文件尾部的数据映射表,其中,所述压缩数据段头部添加到压缩数据段前面,具体采用的方式可以是通过追加写的方式写入空白文件中,例如:沿用上列,header1-1被追加写至空白文件尾部,接着将header1-1对应的seg1-1追加写至空白文件尾部,此时seg1-1位于所述header1-1的后面,接着将header2-2追加写至空白文件尾部,此时header2-2位于所述seg1-1的后面,再将seg2-2追加写至空白文件尾部,此时seg2-2位于header2-2的后面,依次类推,直到所有压缩数据段头部和压缩数据段均追加写完毕,再将数据映射表也采用追加写的方式写入空白文件(此时的空白文件中包括了压缩数据段头部和压缩数据段)的尾部。
需要说明的是,所述空白文件实际上是压缩文件生成之前的一种描述方式,其可以理解为压缩文件,在本实施例中为了表述清楚,数据映射表以及描述数据映射表属性信息的结构可以被放置在空白文件尾部,最终形成压缩文件。其中,空白文件的尾部可以理解压缩文件的尾部,即位于最后一个压缩数据段的后面。
需要说明的是,在本实施例中,所述数据映射表记录压缩数据段长度和相对应的压缩数据段头部长度之和,而所述压缩数据段头部存储有描述压缩数据段属性信息的相关数据,实际上,在其他一些实施例中,所述数据映射表中可以记录压缩数据段长度,用于描述压缩数据段属性信息的相关数据也可以直接记录在数据映射表中,进而在没有压缩数据段头部的情况下,依然可以根据确定的压缩数据段位置,读取压缩数据段对应的源数据段。
为了在解压缩时能够快速的读取所述数据映射表,可以在生成所述压缩文件时包括:
根据所述数据映射表创建用于描述所述数据映射表的数据映射表属性信息(Footer);其中,所述数据映射表属性信息包括至少如下一种信息:描述所述数据映射表的长度信息(MappingS),所述数据映射表的校验值(MappingCRC),所述压缩文件的版本信息(V:version),所述压缩文件格式识别信息(MagicNumber(M))等。然后,将数据映射表属性信息添加到压缩文件尾部,从而生成最终的压缩文件,该数据映射表属性信息添加方式仍然可以采用追加写的方式。在本实施例中,所述数据映射表属性信息(Footer)位于所述数据映射表之后,如图2所示。
请参考图2所示,图2是本申请提供的一种压缩文件的创建方法中压缩文件的结构示意图。如图2所示的压缩文件的结构实施例中,将所述数据映射表属性信息放入所述数据映射表之后的所述空白文件的尾部;即:所述空白文件在放入相关压缩数据段和数据映射表后,将所述数据映射表属性信息放入数据映射表之后。具体地,当所述源文件划分为两个源数据段时,在空白文件的存放顺序可以是:第一压缩数据段头部,第一压缩数据段,第二压缩数据段头部,第二压缩数据段,数据映射表(Mapping),数据映射表属性信息(Footer)。当所述源文件划分为N个源数据段时,空白文件的存放顺序可以是:第一压缩数据段头部,第一压缩数据段,第二压缩数据段头部,第二压缩数据段、第三压缩数据段头部,第三压缩数据段……第N压缩数据段头部,第N压缩数据段,数据映射表(Mapping),数据映射表属性信息(Footer);即空白文件在生成压缩文件时或者在生成压缩文件后,存储数据结构的顺序为压缩数据块(压缩数据段头部+压缩数据段)、数据映射表和数据映射表属性信息,所述数据映射表属性信息位于压缩文件的尾部。
之后,根据所述压缩数据块、所述数据映射表以及所述尾部的数据映射表属性信息,生成对应于所述源文件的压缩文件。
需要说明的是,所述压缩文件中的所述压缩数据段可以根据源数据段的特点采用不同的压缩算法进行压缩处理,进而能够提高压缩文件的可扩展性和压缩性。在读取压缩数据段时,可以按需读取压缩文件中的某个压缩数据段,在读取某个压缩数据段时不受其他压缩数据段的影响或限制,进而提高压缩文件的读性能。
以上对本申请提供的一种压缩文件的创建方法的流程进行了介绍,为便于理解,下面举例说明创建过程:
创建压缩文件file.c;
打开源文件file,将所述源文件按每连续k字节划分成N个数据段(segment),即:seg1,seg2,……segN;其中,k可根据读IO大小进行优化。
初始化segment索引值X=1;
对segX进行压缩,得到压缩数据segX_c;
创建segX_c对应的压缩数据头Header_c,并填充segX_c对应的Header_c校验值CRC、压缩算法、压缩长度等,创建完毕后将Header_c追加写到file.c尾部,接着将segX_c追加写到file.c尾部,此时压缩文件中包括Header_c和segX_c,其中可以将所述Header_c和segX_c看做为压缩数据块。将Header_c的长度和segX_c的压缩长度相加得到的长度和,即Length1(长度和)记录在Mapping中,所述Mapping可以位于内存中,因为压缩数据段的压缩是在内存中进行,因此,所述Length1也可以位于内存中的Mapping中;
更新segment索引值X=X+1;
若X<=N,返回对segX进行压缩的步骤;否则进入下一步骤;
将Mapping追加写至压缩文件file.c尾部;
创建Footer,并在Footer中记录下Mapping长度、Mapping的CRC校验值、版本等信息,并将Footer追加写至压缩文件file.c尾部,从而形成压缩文件file.c。
需要说明的是,在上述举例中采用了追加写的方式将压缩数据段头部、压缩数据段、数据映射表以及数据映射表属性信息写入压缩文件尾部,该种方式使得压缩过程更加快捷,压缩效率更高。
为了提高压缩方法的效率,本申请提供的压缩方法中在压缩文件中还存储有预先设定的压缩阈值,所述压缩阈值用于对压缩数据段的压缩进行优化,即将难以压缩的源数据段保留,不进行压缩处理,直接将源数据段存储在压缩文件中。
具体确定是否为难以压缩的数据段可以通过如下过程实现:
计算压缩数据段的长度(LenA)与压缩前的长度(LenB)的比值r=LenA/LenB,当r越接近0表示源数据段较为容易被压缩,越接近1表示源数据段难以压缩,判断过程中根据预先设定的压缩阈值r(比如r=0.9)进行,具体地,如果压缩比小于该压缩阈值,则压缩,若压缩比高于该压缩阈值,则直接存放源数据段,从而提高压缩效率。
以上是对本申请提供的一种压缩文件的创建方法的举例说明,实际上压缩文件的结构可以仅包括:压缩数据段头部和压缩数据段,或者压缩数据段头部和压缩数据段和数据映射表(Mapping),或者压缩数据段头部和压缩数据段和数据映射表(Mapping)和位于所述数据映射表后面的尾部(Footer),或者压缩数据段和所述压缩数据段格式的识别信息(MagicNumber(M))。
上述是本申请提供的一种压缩文件的创建方法,所述方法能够将一个整体源文件划分成至少两个源数据段,之后分别对不同的源数据段进行压缩,且针对不同的源数据段采用不同的压缩算法进行压缩,进而能够提高创建压缩文件的灵活性。
以上是对本申请提供一种压缩文件的创建方法实施例的说明,与前述提供一种压缩文件的创建方法实施例相对应,本申请还公开了一种压缩文件的创建装置,请参看图3,由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
如图3所示,图3是本申请提供的一种压缩文件的创建装置实施例的结构示意图,该装置包括:
划分单元301,用于对源文件进行划分,获得至少两个划分后的源数据段;具体用于根据源文件的大小确定分段长度,根据所确定的分段长度,对所述源文件进行连续划分,获得划分后的源数据段。
压缩单元302,用于对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录每个压缩数据段的长度。
创建单元303,用于将所述压缩数据段的长度按照压缩顺序组合为数据映射表。
生成单元304,用于根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
该装置还包括:
头部创建单元,用于创建用于描述压缩数据段属性信息的压缩数据段头部;其中,所述压缩数据段属性信息包括至少如下一种信息:所述压缩数据段头部的校验值,所述压缩数据段对应的压缩算法的信息,所述压缩数据段中的压缩数据的校验值,所述压缩数据段的长度,所述压缩数据段格式的识别信息,所述压缩数据段的版本信息。
该创建单元303包括:计算子单元,用于计算压缩数据段与压缩数据段头部的长度和,将所述长度和按照压缩顺序组合为数据映射表。
所述生成单元304包括:生成子单元,用于根据所述压缩数据段头部、所述压缩数据段以及所述数据映射表,生成对应于所述源文件的压缩文件。
该生成子单元包括:
压缩数据块存放子单元,用于根据所述压缩顺序,将所述压缩数据段头部与对应的所述压缩数据段作为压缩数据块放入空白文件中;
数据映射表存放子单元,用于将所述数据映射表放置在最末端的所述压缩数据块之后的空间,从而生成对应于所述源文件的压缩文件
该压缩装置还包括:数据映射表属性信息创建子单元,用于创建用于描述所述数据映射表的数据映射表属性信息,并添加到所述压缩文件的尾部;其中,所述数据映射表属性信息包括至少如下一种信息:所述数据映射表的长度信息,所述数据映射表的校验值,所述压缩文件的版本信息,所述压缩文件格式识别信息。
以上是对本申请提供的一种压缩文件的创建装置实施例的说明,具体内容可以参考压缩文件的创建方法实施例的说明,此处描述的较为概括。
基于上述内容,本申请还提供一种压缩文件的解压方法,请参考图4所示,图4是本申请提供的一种压缩文件的解压方法实施例的流程图。
如图4所示,所述压缩文件的解压方法包括:
步骤S401:获取包括至少两个压缩数据段的压缩文件和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
所述步骤S401中的至少两个压缩数据段的压缩文件,是根据对源文件按照连续划分的源数据段完成压缩的压缩数据段,由压缩数据段构成压缩文件。有多少个压缩数据段对应就有多少个源数据段或者是有多少个源数据段对应就有多少个压缩数据段。例如:对源文件划分为10个源数据段,那么压缩数据段对应源数据段的数量就有10个。可以理解的是,在压缩数据段中可能存在较为难以压缩的源数据段,难以压缩的源数据段可以看做为压缩数据段被存储在压缩文件中。
所述数据映射表是按照压缩顺序将所述压缩数据段的长度组合而获得,包括:根据所述压缩数据段的长度和对应的压缩数据段头部的长度的长度和,将所述长度和按照压缩顺序组合成为数据映射表。所述压缩数据段头部用于描述压缩数据段属性信息。具体可以参考上述关于压缩方法中的描述,此处不再详细描述。
步骤S402:根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
所述步骤S402的具体实现过程可以包括:
确定用于所述数据映射表在所述压缩文件中的位置;
根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置;
将所述压缩数据段的偏移位置对应的所述压缩数据段确定为所述待解压的压缩数据段。
在本实施例中,所述数据映射表在所述压缩文件中的位置可以通过如下方式确定,即:
首先,可以根据所述压缩文件尾部中用于描述所述数据映射表的数据映射表属性信息,读取所述数据映射表的长度;其中,所述数据映射表属性信息中可以包括记载至少以下一种信息:描述所述数据映射表的长度信息(MappingS),所述数据映射表的校验值(MappingCRC),所述压缩文件的版本信息(V:version),所述压缩文件格式识别信息(MagicNumber(M))等。上述数据映射表属性信息被记载在压缩文件的尾部(Footer)中。
之后,可以根据所述数据映射表的长度计算所述数据映射表在所述压缩文件中的偏移位置;因为,在本实施例中,所述数据映射表被放在最末端的压缩数据段之后,即最后一个压缩数据段之后,压缩文件的最前端或者是压缩文件的头部偏移量为0,因此,根据数据映射表的长度就能够获得数据映射表在压缩文件中的偏移位置,即在压缩文件中,从Footer的起始位置向前移动该数据映射表的长度值,即为数据映射表的偏移位置。
最后,可以根据所述偏移位置,确定所述数据映射表在所述压缩文件中的位置。
在确定所述数据映射表在所述压缩文件中的位置后,可以根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置。
在本实施中,所述获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置可以包括:
获得所述源文件中待读取源数据段的偏移位置和长度;
根据所述待读取源数据段的偏移位置和长度,确定与所述待读取源数据段对应的压缩数据块在所述数据映射表中的位置,其中,所述压缩数据块可以包括压缩数据段头部和压缩数据段;每一个压缩数据段都有一个对应的用于描述所述压缩数据段属性信息的压缩数据段头部。
将所述压缩数据块在所述数据映射表中的位置之前的所有所述压缩数据块的长度相加(可以先从数据映射表中获取这个位置之前的每个压缩数据块的长度,然后对获取的这些长度求和),确定为所述压缩文件中与所述待读取源数据段相对应的所述压缩数据块的偏移位置。例如:源数据段是按照16KB划分的,假设读取偏移位置offset为1MB,长度size为4KB的源数据段,此时,根据划分可以获得源数据段对应压缩文件的位置属于1MB/16KB=64(即第64个压缩数据块),然后在数据映射表中查找前63个压缩数据块的长度,并把前63个压缩数据块的长度相加求和,该“和”就是所述第64个压缩数据块在压缩文件中的偏移位置。
将所述压缩数据块的偏移位置确定为所述压缩文件中与所述源数据段对应的所述压缩数据段的偏移位置。沿用上述举例,所述第64个压缩数据块的偏移位置即为第64个压缩数据块中压缩数据段的偏移位置。
将所述压缩数据段的偏移位置对应的所述压缩数据段确定为所述待解压的压缩数据段。
在本实施例中,还可以判断所述数据映射表是否损坏,若是,则恢复所述数据映射表;
根据恢复后的所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源文件的待读取所述源数据段对应的所述压缩数据段的偏移位置。
可以理解的是,恢复后的数据映射表在所述压缩文件中的位置不会发生改变,因此,可以在数据映射表恢复后直接根据之前获得数据映射表在压缩文件中的位置,获取在所述压缩文件中与所述源文件的待读取所述源数据段对应的所述压缩数据段的偏移位置,无需再次确定数据映射表在所述压缩文件中的位置。
在本实施例中,所述判断所述数据映射表是否损坏,可以包括:
根据所述压缩文件尾部中用于描述所述数据映射表的数据映射表属性信息,对所述数据映射表进行校验,也就是说可以通过上述Footer中记录的数据映射表的校验信息对数据映射表进行判断,当判断出数据映射表Mapping有损坏或不正确时,对数据映射表的恢复可以通过依次读取压缩数据段进行恢复,具体可以包括:
根据所述压缩文件的压缩顺序依次读取所述压缩数据段头部的长度和所述压缩数据段的长度。
将所述压缩数据段头部和对应的所述压缩数据段的长度和重写至所述数据映射表中,完成所述数据映射表的恢复
在本实施例中,在每次打开压缩文件时,可以根据所述数据映射表在所述压缩文件中的位置,将所述数据映射表加载到内存中。
相应地,所述根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置,可以包括:
根据所述内存中的所述数据映射表,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置。
将所述数据映射表记载到内存中能够加快读取数据的速度,提高用户的体验感受。
以上是通过所述数据映射表属性信息确定所述数据映射表在压缩文件中的位置,之后根据所述数据映射表以及待读取源数据段偏移位置和长度等确定的待解压的压缩数据段的描述过程,实际上,本申请提供的一种压缩文件的解压方法中在确定所述待解压的压缩数据段时还可以无需根据数据映射表进行确定(特别是,当数据映射表损坏时),因此,当所述数据映射表损坏时,所述确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段可以包括:
初始化文件指针的位置,即将所述文件指针指向首位压缩数据段的压缩数据段头部。
根据所述文件指针所指的位置,读取用于描述所述压缩数据段属性信息的压缩数据段头部;
根据所述压缩数据段头部的长度和压缩数据段长度之和,确定所述下一个压缩数据段的位置,并移动所述文件指针指向下一个压缩数据段的位置;
判断所述文件指针当前的位置是否小于所述待读取源数据相对所述压缩数据段在所述压缩文件中的位置,若是,则按照所述压缩数据段的压缩顺序继续遍历所述压缩文件中的压缩数据段,直到所述文件指针当前的位置等于所述待读取源数据相对所述压缩数据段在所述压缩文件中的位置时,将所述文件指针当前所指的压缩数据段确定为所述待解压的压缩数据段。
以上提供两种方式确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段,一种是通过数据映射表属性信息确定数据映射表的位置,根据所述数据映射表确定所述待解压压缩数据段在压缩文件中的位置,另一种是在数据映射表损坏的情况下,根据对所述压缩文件进行遍历,确定要解压的压缩数据段,在确定要解压的压缩数据段后,进入步骤S403。
所述步骤S403:对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
在本实施例中,对待解压的压缩数据段进行解压缩处理可以包括:
根据所述压缩数据块的偏移位置,读取用于描述所述待解压的压缩数据段属性信息的压缩数据段头部;
根据所述压缩数据段头部中的属性信息对所述压缩数据块中的所述待解压的压缩数据段进行解压处理,得到与所述待解压的压缩数据段对应的源数据段。
本申请提供的压缩文件的解压方法,可以仅读取需要的压缩数据段,而无需对压缩文件整体进行解压处理后获得相应的解压数据,进而提高解压的灵活性。
另外,本申请提供的实施例中,在所述数据映射表损坏的情况下仍然可以通过压缩顺序读取与待读取源数据段对应的所述压缩数据段,并且还可以按照压缩顺序全部读取压缩数据段后对所述数据映射表进行恢复,进而提高了解压文件的性能。
本申请提供的其他实施例中,在所述压缩文件中某一压缩数据段损坏的情况下,并不影响其他压缩数据段的读取,进而提高数据可靠性。
本申请提供的其他实施例中,一方面能够当所述压缩数据段头部出现损坏时,可以对压缩数据段头部损坏情况的分析,进行压缩数据段的恢复。例如:通过压缩数据段头部记录的CRC1校验压缩数据段头部是否损坏,如果损坏,则可以通过系统支持的解压算法对压缩数据段进行解压处理,获得解压后的数据段,为保证解压后的数据段与对应的源数据一致性,可以将解压后的数据段的校验值与所述压缩数据段头部内的CRC2进行比较,CRC2是用来校验压缩前的数据段,如果二者匹配,则说明解压后的数据段未受到压缩数据段头部损坏的影响;因此,本申请提供的解压方法,在压缩数据段头部损坏的情况下,并不影响压缩数据段的解压。
另一方面,在所述数据映射表损坏的情况下,可以通过遍历所述压缩文件对所述数据映射表进行恢复处理,即通过MagicNumber定位每一个压缩数据段的起始位置之后对数据映射表进行恢复,从而保证解压的顺利进行。当然,在数据映射表损坏的情况下,如果在遍历过程中存在某一个压缩数据段的压缩数据段头部存在异常情况无法正常读取,则可以通过MagicNumber查找下一个压缩数据段的起始位置,之后对压缩数据段进行解压获得源数据。因此,本申请提供的解压方法,不会因为压缩数据块中的某个部分出现损坏或异常而导致整个文件无法读取的情况,而可以根据损坏情况对压缩数据段或压缩数据段头部或数据映射表进行恢复,即便在无法恢复的情况下,也不会影响其他正常压缩数据段的读取。其中,所述压缩数据段格式的识别信息MagicNumber被记录在所述压缩数据段头部和/或尾部Footer中,在本申请提供的实施例中,可以将MagicNumber记录于压缩数据段头部,能够快速定位,进而提高读取数据的可靠性。
基于上述,下面结合一个实例对上述解压过程进行说明,该实例可以是沿用上述压缩文件的创建方法中所引用的实例,如下:
所述实例是基于压缩数据段头部、压缩数据段、数据映射表、Footer等信息进行的说明,打开压缩文件file.c;将文件指针跳转到文件尾部,读取Footer信息;根据Footer信息中记载的数据映射表Mapping的长度计算出数据映射表Mapping在所述压缩文件中的偏移位置offset_M;根据数据映射表Mapping的偏移位置offset_M读取压缩文件中的数据映射表Mapping信息,并将数据映射表Mapping信息常驻在内存;之后将文件指针跳转到第一压缩数据段的第一压缩数据段头部。通过待读取源数据段的偏移位置offset和长度size,以及数据映射表Mapping,获得对应所述源数据段偏移位置offset和长度size的压缩数据段在压缩文件file.c中位置offset_c,将文件指针偏移到压缩数据段的位置offset_c,读取压缩数据段包括两部分,定长压缩数据段头部Header和实际压缩数据段data_c;从压缩数据段头部Header中获取压缩数据CRC进行校验,判断压缩数据段是否正确,若压缩数据段有错,给用户返回错误,流程结束;反之,则从压缩数据段头部Header中获取压缩数据信息,如压缩算法等,并对data_c进行解压,获得源数据data。
当所述实例中压缩文件中的某一压缩数据段损坏的情况下,解压所述压缩数据段的过程可以是:
假设压缩文件file.c中的压缩数据段segmentX-1损坏,当要读取segmentX数据时:可以先将file.c中的数据映射表Mapping加载到内存中,以便提高读取的速度;通过数据映射表Mapping确定segmentX在所述压缩文件内的位置;文件指针指向压缩数据段segmentX位置,根据该位置读取压缩数据段segmentX,因为,压缩文件中的压缩数据段均对应源数据段为多个段或多个块,因此压缩数据段segmentX-1损坏并不影响压缩数据段segmentX的读取;
读取压缩数据段segmentX对应的压缩数据段头部Header,获取版本、压缩算法、CRC等信息,检测压缩数据段是否正确,若数据错误,向用户返回错误;否则根据压缩数据段头部Header中的压缩算法对压缩数据段进行解压,获得源数据。
当所述实例中压缩文件中的数据映射表损坏的情况下,读取segmentX数据的过程可以如下:
初始化segment的位置I,即I=1,使得从压缩文件的第一压缩数据段开始读取;读取压缩数据段segmentI的压缩数据段头部Header(定长,假设为HSize),查找到segmentI的压缩数据段长度DSize;文件指针向后移动HSize+DSize距离,指向下一个压缩数据段segment位置;I+1,若I<N则继续遍历压缩数据段segment;否则,I=N,即找到目标压缩数据段segmentN,读取压缩数据段segmentN的压缩数据段头部Header和压缩数据段;
根据压缩数据段头部Header中的版本、压缩算法、CRC等信息对压缩数据进行验证,若有数据错误,向用户返回错误;否则根据压缩数据段头部Header中的压缩算法解压压缩数据段segmentN,得到源数据。
需要说明的是,在本申请提供的解压方法中,对压缩文件进行解压的过程中,可能存在部分未被压缩的源数据段,该些源数据段因为难以进行压缩,因此直接将源数据段存储在了压缩文件中,使得解压时效率更好。
以上是对本申请提供一种压缩文件的解压方法实施例的说明,与前述提供一种压缩文件的解压方法实施例相对应,本申请还公开了一种压缩文件的解压装置,请参看图5,由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。
如图5所示,图5本申请提供的一种压缩文件的解压装置实施例的结构示意图。所述装置包括:
获取单元501,用于获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是按照压缩顺序根据所述压缩数据段的长度进行组合得到;
确定单元502,用于根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
解压单元503,用于对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
所述数据映射表是按照压缩顺序根据所述压缩数据段的长度进行组合得到,包括:根据所述压缩数据段和对应的压缩数据段头部的长度和,按照压缩顺序组合成为数据映射表;所述压缩数据段头部用于描述压缩数据段属性信息。
所述确定单元502包括:
数据映射表位置确定子单元,用于确定所述数据映射表在所述压缩文件中的位置;
压缩数据段偏移位置获取子单元,用于根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置。
待解压确定子单元,用于将所述压缩数据段的偏移位置对应的所述压缩数据段确定为所述待解压的压缩数据段。
所述数据映射表位置确定子单元包括:
长度获取子单元,用于根据所述压缩文件尾部中用于描述所述数据映射表的数据表映射属性信息,读取所述数据映射表的长度;
计算子单元,用于根据所述数据映射表的长度计算所述数据映射表在所述压缩文件中的偏移位置;
所述数据映射表位置确定子单元具体可以根据所述偏移位置,确定所述数据映射表在所述压缩文件中的位置。
所述压缩数据段偏移位置获取子单元包括:
源数据段获得子单元,用于获得所述源文件中待读取源数据段的偏移位置和长度;
压缩数据块确定子单元,用于根据所述待读取源数据段的偏移位置和长度,确定与所述待读取源数据段对应的压缩数据块在所述数据映射表中的位置,其中,所述压缩数据块包括压缩数据段头部和压缩数据段;
压缩数据块偏移位置确定子单元,用于将所述压缩数据块在所述数据映射表中的位置之前的所有所述压缩数据块的长度和,确定为所述压缩文件中与所述待读取源数据段相对应的所述压缩数据块的偏移位置;
所述压缩数据段偏移位置获取子单元具体用于将所述压缩数据块的偏移位置确定为所述压缩文件中与所述源数据段对应的所述压缩数据段的偏移位置。
所述压缩数据段偏移位置获取子单元包括:
判断子单元,用于判断所述数据映射表是否损坏,若是,则进入恢复子单元;
所述恢复子单元用于恢复所述数据映射表,并根据恢复后的所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源文件的待读取的所述源数据段对应的所述压缩数据段的偏移位置。
所述判断子单元包括:
校验子单元,用于根据所述压缩文件尾部中用于描述所述数据映射表的数据映射表属性信息,对所述数据映射表进行校验,根据校验结果确定所述数据映射表是否损坏。
所述恢复子单元包括:
读取子单元,用于根据所述压缩文件的压缩顺序依次读取所述压缩数据段头部的长度和所述压缩数据段的长度;
数据映射表恢复子单元,用于将所述压缩数据段头部和对应的所述压缩数据段的长度和重写至所述数据映射表中,完成所述数据映射表的恢复。
所述确定单元502包括:
初始化子单元,用于初始化文件指针的位置为第一个压缩数据段的头部;
头部读取子单元,用于根据所述文件指针所指的位置,读取用于描述所述压缩数据段属性信息的压缩数据段头部;
移动子单元,用于根据所述压缩数据段头部的长度和压缩数据段长度之和,确定下一个压缩数据段的位置,并移动所述文件指针指向下一个压缩数据段的位置;
移动距离判断子单元,用于判断所述文件指针当前的位置是否小于所述待读取源数据相对所述压缩数据段在所述压缩文件中的位置,若是,则按照所述压缩数据段的压缩顺序继续遍历所述压缩文件中的压缩数据段,直到所述文件指针当前的位置等于所述待读取源数据相对所述压缩数据段在所述压缩文件中的位置时,将所述文件指针当前所指的压缩数据段确定为所述待解压的压缩数据段。
所述解压单元503包括:
数据读取子单元,用于根据所述压缩数据块的偏移位置,读取用于描述所述待解压的压缩数据段属性信息的压缩数据段头部;
解压处理子单元,用于根据所述压缩数据段头部中的属性信息对所述压缩数据块中的所述待解压的压缩数据段进行解压处理,得到与所述待解压的压缩数据段对应的源数据段。
所述解压单元503包括:
属性信息读取子单元,用于根据所述文件指针所指位置,读取用于描述所述压缩数据段属性信息的压缩数据段头部;
所述解压处理子单元具体用于根据所述压缩数据段头部的属性信息对所述压缩数据段进行解压处理,得到所述待解压的压缩数据段对应的源数据段。
所述解压处理子单元包括:
校验子单元,用于根据所述压缩数据段头部中的属性信息对所述待解压的压缩数据段进行压缩数据段校验;校验结果正确时,根据所述压缩数据段头部中压缩算法的属性信息,对所述待解压的压缩数据段进行解压处理,得到所述待解压的压缩数据段对应的源数据段。
基于上述本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:
对源文件进行划分,获得至少两个划分后的源数据段;
对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录压缩数据段的长度;
将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
基于上述本申请还一种存储设备,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被所述处理器读取执行时,执行如下操作:
对源文件进行划分,获得至少两个划分后的源数据段;
对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录压缩数据段的长度;
将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
基于上述本申请还提供一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:
获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
基于上述本申请还一种存储设备,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被所述处理器读取执行时,执行如下操作:
获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

Claims (26)

1.一种压缩文件的创建方法,包括:
对源文件进行划分,获得至少两个划分后的源数据段;
对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录每个压缩数据段的长度;
将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
2.根据权利要求1所述的压缩文件的创建方法,其中,还包括:创建用于描述压缩数据段属性信息的压缩数据段头部;
所述将压缩数据段的长度按照压缩顺序组合为数据映射表包括:
计算压缩数据段与压缩数据段头部的长度和,将所述长度和按照压缩顺序组合为数据映射表;
所述根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件,包括:
根据所述压缩数据段头部、所述压缩数据段以及所述数据映射表,生成对应于所述源文件的压缩文件。
3.根据权利要求2所述的压缩文件的创建方法,其中,所述压缩数据段属性信息包括至少如下一种信息:所述压缩数据段头部的校验值,所述压缩数据段对应的压缩算法的信息,所述压缩数据段中的压缩数据的校验值,所述压缩数据段的长度,所述压缩数据段格式的识别信息,所述压缩数据段的版本信息。
4.根据权利要求2所述的压缩文件的创建方法,其中,所述根据所述压缩数据段头部、压缩数据段以及所述数据映射表,生成对应于所述源文件的压缩文件,包括:
根据所述压缩顺序,将所述压缩数据段头部与对应的所述压缩数据段作为压缩数据块放入空白文件中;
将所述数据映射表放置在最末端的所述压缩数据块之后的空间,从而生成对应于所述源文件的压缩文件。
5.根据权利要求4所述的压缩文件的创建方法,其中,还包括:
创建用于描述所述数据映射表的数据映射表属性信息,并添加到所述压缩文件的尾部。
6.根据权利要求5所述的压缩文件的创建方法,其中,所述数据映射表属性信息包括至少如下一种信息:所述数据映射表的长度信息,所述数据映射表的校验值,所述压缩文件的版本信息,所述压缩文件格式识别信息。
7.根据权利要求1所述的压缩文件的创建方法,其中,所述对源文件进行划分,获得至少两个划分后的源数据段,包括:
根据源文件的大小确定分段长度;
根据所确定的分段长度,对所述源文件进行划分,获得划分后的源数据段。
8.一种压缩文件的创建装置,包括:
划分单元,用于对源文件进行划分,获得至少两个划分后的源数据段;
压缩单元,用于对划分后的所述源数据段分别进行压缩处理,得到对应所述源数据段的压缩数据段,并记录压缩数据段的长度;
创建单元,用于将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
生成单元,根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
9.一种压缩文件的解压方法,包括:
获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件;所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
10.根据权利要求9所述的压缩文件的解压方法,其中,所述数据映射表具体是根据所述压缩数据段和对应的压缩数据段头部的长度和,按照压缩顺序进行组合得到;所述压缩数据段头部用于描述压缩数据段属性信息。
11.根据权利要求10所述的压缩文件的解压方法,其中,所述根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段,包括:
确定所述数据映射表在所述压缩文件中的位置;
根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置;
将所述压缩数据段的偏移位置对应的所述压缩数据段确定为所述待解压的压缩数据段。
12.根据权利要求11所述的压缩文件的解压方法,其中,所述确定所述数据映射表在所述压缩文件中的位置,包括:
根据所述压缩文件尾部中用于描述所述数据映射表的数据映射表属性信息,读取所述数据映射表的长度;
根据所述数据映射表的长度计算所述数据映射表在所述压缩文件中的偏移位置;
根据所述数据映射表在所述压缩文件中的偏移位置,确定所述数据映射表在所述压缩文件中的位置。
13.根据权利要求11所述的压缩文件的解压方法,其中,所述根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的所述压缩数据段的偏移位置,包括:
获得所述源文件中待读取源数据段的偏移位置和长度;
根据所述待读取源数据段的偏移位置和长度,确定与所述待读取源数据段对应的压缩数据块在所述数据映射表中的位置,其中,所述压缩数据块包括压缩数据段头部和压缩数据段;
将所述压缩数据块在所述数据映射表中的位置之前的所有所述压缩数据块的长度和,确定为所述压缩文件中与所述待读取源数据段相对应的所述压缩数据块的偏移位置;
将所述压缩数据块的偏移位置确定为所述压缩文件中与所述源数据段对应的所述压缩数据段的偏移位置。
14.根据权利要求13所述的压缩文件的解压方法,其中,所述对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段,包括:
根据所述压缩数据块的偏移位置,读取用于描述所述待解压的压缩数据段属性信息的压缩数据段头部;
根据所述压缩数据段头部中的属性信息对所述压缩数据块中的所述待解压的压缩数据段进行解压处理,得到与所述待解压的压缩数据段对应的源数据段。
15.根据权利要求11所述的压缩文件的解压方法,其中,所述根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置,包括:
判断所述数据映射表是否损坏,若是,则恢复所述数据映射表;
根据恢复后的所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源文件的待读取所述源数据段对应的所述压缩数据段的偏移位置。
16.根据权利要求15所述的压缩文件的解压方法,其中,所述判断所述数据映射表是否损坏,包括:
根据所述压缩文件尾部中用于描述所述数据映射表的数据映射表属性信息,对所述数据映射表进行校验,根据校验结果确定所述数据映射表是否损坏。
17.根据权利要求15所述的压缩文件的解压方法,其中,所述恢复所述数据映射表,包括:
根据所述压缩文件的压缩顺序依次读取所述压缩数据段头部的长度和所述压缩数据段的长度;
将所述压缩数据段头部和对应的所述压缩数据段的长度和重写至所述数据映射表中,完成所述数据映射表的恢复。
18.根据权利要求11所述的压缩文件的解压方法,其中,所述根据所述数据映射表在所述压缩文件中的位置,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置,包括:
根据所述数据映射表在所述压缩文件中的位置,将所述数据映射表加载到内存中;
根据所述内存中的所述数据映射表,获取在所述压缩文件中与所述源数据段对应的压缩数据段的偏移位置。
19.根据权利要求9所述的压缩文件的解压方法,其中,当所述数据映射表损坏时,所述确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段,包括:
初始化文件指针的位置为第一个压缩数据段的头部;
根据所述文件指针所指的位置,读取用于描述所述压缩数据段属性信息的压缩数据段头部;
根据所述压缩数据段头部的长度和压缩数据段长度之和,确定下一个压缩数据段的位置,并移动所述文件指针指向下一个压缩数据段的位置;
判断所述文件指针当前的位置是否小于所述待读取源数据相对所述压缩数据段在所述压缩文件中的位置,若是,则按照所述压缩数据段的压缩顺序继续遍历所述压缩文件中的压缩数据段,直到所述文件指针当前的位置等于所述待读取源数据相对所述压缩数据段在所述压缩文件中的位置时,将所述文件指针当前所指的压缩数据段确定为所述待解压的压缩数据段。
20.根据权利要求19所述的压缩文件的解压方法,其中,所述对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段,包括:
根据所述文件指针所指位置,读取用于描述所述压缩数据段属性信息的压缩数据段头部;
根据所述压缩数据段头部的属性信息对所述压缩数据段进行解压处理,得到所述待解压的压缩数据段对应的源数据段。
21.根据权利要求18或19所述的压缩文件的解压方法,其中,所述根据所述压缩数据段头部的属性信息对所述压缩数据段进行解压处理,得到所述待解压的压缩数据段对应的源数据段,包括:
根据所述压缩数据段头部中的属性信息对所述待解压的压缩数据段进行压缩数据段校验;
校验结果正确时,根据所述压缩数据段头部中压缩算法的属性信息,对所述待解压的压缩数据段进行解压处理,得到所述待解压的压缩数据段对应的源数据段。
22.一种压缩文件的解压装置,包括:
获取单元,用于获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
确定单元,用于根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
解压单元,用于对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
23.一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:
对源文件进行划分,获得至少两个划分后的源数据段;
对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录压缩数据段的长度;
将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
24.一种存储设备,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被所述处理器读取执行时,执行如下操作:
对源文件进行划分,获得至少两个划分后的源数据段;
对划分后的所述源数据段依次进行压缩处理,得到对应所述源数据段的压缩数据段,并记录压缩数据段的长度;
将所述压缩数据段的长度按照压缩顺序组合为数据映射表;
根据所述压缩数据段和所述数据映射表,生成对应于所述源文件的压缩文件。
25.一种电子设备,包括:
处理器;
存储器,用于存储对网络平台产生数据进行处理的程序,所述程序在被所述处理器读取执行时,执行如下操作:
获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
26.一种存储设备,用于存储网络平台产生数据,以及对应所述网络平台产生数据进行处理的程序;
所述程序在被所述处理器读取执行时,执行如下操作:
获取包括至少两个压缩数据段和存储有各个压缩数据段长度的数据映射表的压缩文件,所述压缩文件对应于未压缩的源文件,所述压缩数据段对应于所述源文件中的源数据段;所述数据映射表是将所述压缩数据段的长度按照压缩顺序进行组合得到;
根据所述数据映射表,确定所述包括至少两个压缩数据段的压缩文件中待解压的压缩数据段;
对所述待解压的压缩数据段进行解压缩处理,得到与所述待解压的压缩数据段对应的源数据段。
CN201810930100.2A 2018-08-15 2018-08-15 压缩文件创建和解压的方法及装置、以及电子和存储设备 Active CN110888851B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810930100.2A CN110888851B (zh) 2018-08-15 2018-08-15 压缩文件创建和解压的方法及装置、以及电子和存储设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810930100.2A CN110888851B (zh) 2018-08-15 2018-08-15 压缩文件创建和解压的方法及装置、以及电子和存储设备

Publications (2)

Publication Number Publication Date
CN110888851A true CN110888851A (zh) 2020-03-17
CN110888851B CN110888851B (zh) 2023-06-20

Family

ID=69744199

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810930100.2A Active CN110888851B (zh) 2018-08-15 2018-08-15 压缩文件创建和解压的方法及装置、以及电子和存储设备

Country Status (1)

Country Link
CN (1) CN110888851B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112579547A (zh) * 2021-01-27 2021-03-30 深圳市亿联无限科技有限公司 嵌入式系统镜像文件压缩方法及装置
CN113641643A (zh) * 2021-07-02 2021-11-12 阿里巴巴新加坡控股有限公司 文件写入方法及装置
WO2022198483A1 (zh) * 2021-03-24 2022-09-29 深圳市大疆创新科技有限公司 数据压缩方法、装置、可移动平台及存储介质
WO2022206144A1 (zh) * 2021-03-30 2022-10-06 华为技术有限公司 数据压缩方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101411157A (zh) * 2006-05-04 2009-04-15 高通股份有限公司 用于在稳健标头压缩中加强局部修复的方法和系统
US20120268298A1 (en) * 2009-09-04 2012-10-25 Yun-Sik Oh Method and apparatus for compressing and decompressing block unit data
CN103309621A (zh) * 2012-12-12 2013-09-18 珠海金山网络游戏科技有限公司 读取分段压缩包中数据的方法
CN107977442A (zh) * 2017-12-08 2018-05-01 北京希嘉创智教育科技有限公司 日志文件压缩及解压缩方法、电子设备和可读存储介质
CN108388569A (zh) * 2018-01-09 2018-08-10 杭州电子科技大学 一种快速的键值数据库的系统及建立方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101411157A (zh) * 2006-05-04 2009-04-15 高通股份有限公司 用于在稳健标头压缩中加强局部修复的方法和系统
US20120268298A1 (en) * 2009-09-04 2012-10-25 Yun-Sik Oh Method and apparatus for compressing and decompressing block unit data
CN103309621A (zh) * 2012-12-12 2013-09-18 珠海金山网络游戏科技有限公司 读取分段压缩包中数据的方法
CN107977442A (zh) * 2017-12-08 2018-05-01 北京希嘉创智教育科技有限公司 日志文件压缩及解压缩方法、电子设备和可读存储介质
CN108388569A (zh) * 2018-01-09 2018-08-10 杭州电子科技大学 一种快速的键值数据库的系统及建立方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BORA PARK等: "Recovery of Damaged Compressed Files for Digital Forensic Purposes" *
周日升,李生红: "Zip压缩文件数据修复技术研究" *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112579547A (zh) * 2021-01-27 2021-03-30 深圳市亿联无限科技有限公司 嵌入式系统镜像文件压缩方法及装置
CN112579547B (zh) * 2021-01-27 2024-01-23 深圳市亿联无限科技有限公司 嵌入式系统镜像文件压缩方法及装置
WO2022198483A1 (zh) * 2021-03-24 2022-09-29 深圳市大疆创新科技有限公司 数据压缩方法、装置、可移动平台及存储介质
WO2022206144A1 (zh) * 2021-03-30 2022-10-06 华为技术有限公司 数据压缩方法及装置
CN113641643A (zh) * 2021-07-02 2021-11-12 阿里巴巴新加坡控股有限公司 文件写入方法及装置

Also Published As

Publication number Publication date
CN110888851B (zh) 2023-06-20

Similar Documents

Publication Publication Date Title
CN110888851B (zh) 压缩文件创建和解压的方法及装置、以及电子和存储设备
CN105009067B (zh) 管理对存储数据单元的操作
WO2015070521A1 (zh) 将ubi格式的系统文件制作成工厂烧录映像文件方法
WO2016107272A1 (zh) 固态硬盘存储设备和固态硬盘存储设备的数据存取方法
US10338833B1 (en) Method for achieving sequential I/O performance from a random workload
US9336081B2 (en) Data writing and reading method, and memory controller and memory storage apparatus using the same for improving reliability of data access
CN110413454B (zh) 基于存储阵列的数据重建方法、装置及存储介质
TW201243590A (en) Data writing and reading method, memory controller and memory storage apparatus
US11288182B2 (en) Method and computer program product and apparatus for multi-namespace data access
US20130185268A1 (en) Methods of compressing and storing data and storage devices using the methods
US11656942B2 (en) Methods for data writing and for data recovery, electronic devices, and program products
US11074124B2 (en) Method and system for enhancing throughput of big data analysis in a NAND-based read source storage
KR20150125010A (ko) 저장된 데이터 유닛들의 동작 관리
CN113391947B (zh) Ssd raid条带掉电快速恢复方法、装置、计算机设备及存储介质
CN111813591B (zh) Nand Flash的数据纠错方法、装置、电子设备及存储介质
CN113311993A (zh) 数据存储方法及数据读取方法
US11176033B2 (en) Data storage devices and data processing methods
US10459807B2 (en) Determining modified portions of a RAID storage array
KR102275240B1 (ko) 저장된 데이터 유닛들의 동작 관리
CN102360381B (zh) 一种对嵌入式程序进行无损压制的装置和方法
CN110874285B (zh) 一种实现ext文件系统的可还原写操作的方法
CN113259410A (zh) 一种基于分布式存储的数据传输校验方法及系统
US11442929B2 (en) Double header logging of slotted page structures
US6915475B1 (en) Data integrity management for data storage systems
CN110321073B (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