CN101582067A - 解压压缩文件时减小存储需求的方法和*** - Google Patents
解压压缩文件时减小存储需求的方法和*** Download PDFInfo
- Publication number
- CN101582067A CN101582067A CNA2008100990364A CN200810099036A CN101582067A CN 101582067 A CN101582067 A CN 101582067A CN A2008100990364 A CNA2008100990364 A CN A2008100990364A CN 200810099036 A CN200810099036 A CN 200810099036A CN 101582067 A CN101582067 A CN 101582067A
- Authority
- CN
- China
- Prior art keywords
- data
- compression
- data block
- compressed file
- decompression
- 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.)
- Pending
Links
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
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)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种对压缩文件进行解压缩的方法和***。根据本发明的方法,包括:输入步骤,从所述压缩文件中读入一压缩的数据块;解压缩步骤,对所述压缩的数据块进行解压缩;输出步骤,将解压缩的数据存储到解压缩文件中;删除步骤,从所述压缩文件中删除所述已经解压缩的压缩数据块。本发明提供的方法和***减少了在压缩格式和解压缩格式之间数据的不必要的重复,不仅能够在解压缩过程中减少存储空间需求,而且不会对现有的压缩/解压缩算法作重大改变,很容易被集成到现有的压缩/解压缩工具中。
Description
技术领域
本发明涉及计算机软件技术,特别地,涉及解压压缩文件时减小存储设备空间需求的方法和***
背景技术
文件压缩是一种通过对原始文件中的信息进行编码,从而使用较少字节的文件来表达该原始文件中的信息的过程。文件压缩是非常有用的,因为文件压缩大大减少了资源的消耗,例如,信息保存时,压缩文件可以减少对存储资源的需求,信息传输时,压缩文件可以减少对带宽的需求,等等。由于这些需求,压缩技术发展很快,涌现出大量的压缩算法,不同的压缩算法会采用不同的压缩格式,例如微软的Window操作***中常用的ZIP、RAR格式,Linux/Unix操作***常用的gz、bz格式等。
文件压缩可以将多个文件压缩成一个文件,因此,当对较多的文件进行压缩时,或者对一个非常大的原始文件进行压缩时,压缩文件仍然很大。当解压缩作为一个整体过程,被压缩的数据在整个解压缩过程中,在存储设备(例如磁盘或磁带)中保持不变,这样,为了成功地解压缩一个大小为S的压缩文件,在解压缩完成之前,至少需要2S大小的存储空间。这样的存储空间要求对于较大的压缩文件是很难满足的。
现有技术已经提出了一些对压缩文件减少存储空间需求的解决办法。第一种方法是解压缩完成后删除被压缩的数据;这种方法的典型例子是Linux中的bunzip2,其当解压缩完全完成后,默认将自动删除压缩文件。
第二种方法是对压缩文件进行选择性地解压缩。WinRAR及WinZip就是采用该方法的典型例子,这两种软件允许用户在未解压压缩文件前浏览该压缩文件,当压缩文件中的一个或多个文件被选择并且被打开时,解压方法就直接启动。
但是,这两种方法实际上都是将解压的文件存储到存储设备上,但是对于某些领域的数据,如银行交易数据,石油业的监测数据,气象观测涉及的数据、科学计算涉及的数据,或者多媒体数据等,这些数据的数据量非常大,备份的压缩文件也非常大,例如地震行业中超过100G字节的数据库是非常常见的。这样大的备份压缩文件在解压缩时就需要非常大的存储空间,加上解压后的文件,仅仅这两个文件的大小,存储空间也常常不能满足这种要求。
发明内容
因此,需要一种在解压缩过程中减少存储空间需求的方法和***,该方法和***能解决现有方法不能满足解压缩过程中减少存储空间需求的问题。
根据本发明的一个方面,提供了一种对压缩文件进行解压缩的方法,包括:输入步骤,从所述压缩文件中读入一压缩的数据块;解压缩步骤,对所述压缩的数据块进行解压缩;输出步骤,将解压缩的数据存储到解压缩文件中;删除步骤,从所述压缩文件中删除所述已经解压缩的压缩数据块。
根据本发明的另一个方面,提供了一种对压缩文件进行解压缩的***,包括:输入装置,用于从所述压缩文件中读入一压缩的数据块的装置;解压缩装置,用于对所述压缩的数据块进行解压缩的装置;输出装置,用于将解压缩的数据存储到解压缩文件中的装置;删除装置,用于从所述压缩文件中删除所述已经进行解压缩的压缩数据块的装置。
本发明提供的方法和***减少了在压缩格式和解压缩格式之间数据的不必要的重复,不仅能够在解压缩过程中减少存储空间需求,而且不会对现有的压缩/解压缩算法作重大改变,很容易被集成到现有的压缩/解压缩工具中。
附图说明
通过对附图中本发明示例实施例方式的更详细描述,本发明的上述、以及其它目的、特征和优势将变得更加明显,其中,相同的参考标号通常代表本发明示例实施例方式中的相同部件。
图1示意性地示出了根据本发明的一个优选的实施方式的解压缩方法流程图;
图2示意性地示出了一个分块压缩的方法流程图;
图3示意性地示出了根据图2的压缩方法对应的解压缩方法的流程;
图4示意性地示出了具有压缩标志的压缩数据;
图5示意性地示出了压缩数据并生成压缩标志的方法流程;
图6示意性地示出了使用图5压缩流程的压缩文件解压缩过程;
图7示意性地示出了解压缩数据缓冲区和输入数据的偏移地址的关系示意图;
图8示意性地示出了方案3的解压缩流程;
图9a示意性地示出了一个优选实施方式的解压缩过程;
图9b示意性地示出了图9a解压缩过程对应的压缩数据删除过程;以及
图10示意性地示出了本发明所用的解压缩***。
具体实施方式
将参照附图更加详细地描述本发明的优选实施方式,在附图中显示了本发明的优选实施例。然而,本发明可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且,完全将本发明的范围传达给本领域的技术人员。
通常的解压缩技术在完成整个解压缩过程中,会在存储空间(例如硬盘或磁带等)保持原始压缩数据不变,如果原始压缩数据过大,解压缩过程中存储空间不足,会造成解压缩失败。
本发明提出了一种在解压缩过程中减少存储空间需求的方法,该方法在解压缩时,全部的压缩数据被分成若干块,每个数据块的大小可以相同,也可以不同,分块可以由用户指定固定大小分块或不同大小分块,这样就可以一边解压缩原始压缩文件,一边删除部分已经解压缩的压缩文件的内容,从而减少在解压缩过程中需要的存储空间。
图1示意性地示出了根据本发明的一个优选的实时方式的解压缩方法流程图,该流程在解压缩过程中能够减少存储空间的需求。在图1中,首先在步骤S101,开始解压缩过程,该开始过程也可以认为是一个初始化过程,用户可以在开始的初始化过程得到分块信息,也可能是用户自己对数据分块等等。这里假设全部压缩数据的大小为M。在步骤S102,从全部压缩文件中读入一个数据块,假设该数据块的大小为M1(M1<M),在步骤S103,使用现有的解压缩方法解压读入的该压缩的数据块;在步骤S104,将解压后的数据输出到解压缩文件中,假设解压后的该数据块大小为N1,全部压缩的数据解压后的数据大小为N(N1<N),然后在步骤S105,从压缩文件(大小为M)中删除已经被解压的压缩数据块(大小为M1),然后返回步骤S102,继续读入下一压缩数据块进行解压。由上面的解压过程描述可以看出,原始的压缩文件占用的存储空间在不断减小,解压后的数据文件占用的存储空间不断加大,在读入第k个数据块时,整体占用的存储空间为M-M1-...-Mk+N1+...+Nk其所占用的存储空间比现有技术少M1+...+Mk。当原始压缩文件全部解压完毕时,压缩文件占用的存储空间将全部释放出来,这时该方法整体占用的存储空间为N,所占用的存储空间比现有技术少M。
由于压缩/解压缩方法比较特殊,很多算法要利用数据之间的相关性,因此,上述方法的具体实现中还有很多具体的要求,例如,数据分成多少个数据块,每个数据块如何处理等,下面将提供四种不同的具体的实施方案,来实现图1中的方法。当然,本领域技术人员在本发明提供的技术方案下,可以知道还有很多种其它的实现方法,具体数据如何分块,并不影响本发明的实现。因此,本发明提供的具体实施例并不构成对本发明的限制,相反,在本发明构思下的其它技术方案都被认为包含在本发明的保护范围之内。
方案1:
在该技术方案中,为了进行解压缩,在压缩时将原始数据分块,原始数据块之间是相互独立的,因此,可以对每个原始数据块单元分别压缩,然后将压缩结果融合在一起,成为压缩后的数据,同时,压缩后的数据还记录了如何对数据进行分块,这样,解压缩时就可以根据压缩文件中的数据分块信息,对每个压缩的数据块单元信息分别解压缩,每当解压缩一个压缩的数据块单元,就可以从原始压缩文件中删除该压缩的数据块单元信息,从而达到解压缩时减少原始压缩文件占用的存储空间的目的。
每一个数据块单元的长度可由用户指定,例如,用户可以指定相同大小的数据块单元,也可以指定不同大小的数据块单元,或者,也可以采用***默认的数据块大小,例如,1兆字节等等。通常来说,小的数据块更能减少对存储空间的需求,但是,会降低压缩的效率,因为,分成更多的相互独立的数据块减小了数据之间的相关性。因此。用户可以根据自己的需求,灵活分块。
数据分块的信息在压缩过程中,以各种形式存储在压缩后的文件中,优选地,可以采用表1所示的的数据块表,放在压缩后的文件的开始、结尾或者任何指定的地方。表1中,每一个数据块占用一行。每一行的条目包括数据块的ID,在压缩后的文件中该数据块的大小和数据块的偏址,也可以记录数据块起始位置和结束位置,或者是其它相关信息。通过这些信息能够导出在压缩后的文件中该数据块的起始位置和结束位置的信息。在该表中,用户还可以包括其它信息。
表1数据块表
数据块ID | 数据块大小 | 数据块偏址 |
0 | 0x472A | 0x00000000 |
1 | 0x5D24 | 0x0000427A |
2 | 0x4057 | 0x00009F9E |
... | ... | ... |
图2示意性地示出了一个分块压缩的方法流程图。该压缩流程中,在步骤S201,开始压缩过程。在步骤S202,将数据分成数据块。该步骤可以通过接收用户的分块信息来进行分块,也可以自动分块,例如,将每个数据块的大小定义为1兆字节等等。在步骤S203,对于每个数据块,采用现有的压缩算法进行压缩,并将压缩后的数据加入到压缩文件中,就可以得到该压缩后的数据块在压缩后的文件中的位置,包括其起始位置和结束位置。然后在步骤S204,更新每个数据块在压缩后的文件中的位置信息,接着,在步骤S205,所有的数据都压缩完毕,将得到的数据分块信息加入到压缩文件中。最后,在步骤S206,输出压缩后的文件,就完成了分块压缩数据过程。
图3示意性地示出了根据图2的压缩方法对应的解压缩方法的流程。图3所示的方法流程中,步骤S301还要获得压缩数据分块信息,这是和图1略有不同的地方,其他步骤和图1是一致的,这里,不再赘述。
这样,通过在压缩时对数据分块,解压缩时利用分块信息解压缩,逐步删除解压后的压缩信息,就实现了解压缩时减少存储空间需求的目的。该技术方案不依赖于压缩算法,可以用于任何压缩算法。
方案2:
在该技术方案中,采用方案1中的分块压缩方式,但是,不在压缩文件中直接保留数据分块信息,而是通过将压缩标志放入压缩文件的方式,来间接提供给解压缩方法数据的分块信息。任意两个相邻的压缩标志之间的数据被认为是分块压缩的,没有相关性。图4示意性地示出了具有压缩标志的压缩数据。
图5示意性地示出了压缩数据并生成压缩标志的方法流程。和图2相比,步骤S204和S205更新为图5中的步骤S504将压缩后的数据块加入到压缩文件后,加入压缩标志,其它如S201和S501、S202和S502、S203和S503、S206和S505步骤是相同的,这里不再赘述。
对应图5的压缩流程,图6示意性地示出了使用图5压缩流程的压缩文件解压缩过程。这时读入的数据块就是两个压缩标志之间的数据。如步骤S602所示。其余步骤,如S101和S601、S103和S603、S104和S604、S105和S605是相同的,这里不再赘述。
该技术方案不依赖于压缩算法,可以用于任何压缩算法。
3方案3
为了说明该方法,首先要定义以下几个概念:
解压缩数据缓冲区(Buffer):该数据缓冲区是用于解压缩过程的一个数据缓冲区,通常是内存中的一个存储区域。该数据缓冲区可以有固定的大小,例如,1兆字节等,也可以由用户在合适的范围内设定其大小,并且,不同的解压缩算法也可以采用不同的缓冲区大小。数据缓冲区大小也就是对应着图1的数据块的大小,解压缩算法就对该解压缩数据缓冲区中的数据进行解压缩。这里需要注意的是:压缩算法常常利用数据之间的相关性,因此,对解压缩数据缓冲区中的数据进行解压缩时,并非全部数据都能够解压缩,通常,其最后的一部分数据,可能会由于其相关的数据没有完全读入解压缩缓冲区,从而使得该部分数据不能够被正确解压缩。
输入数据的偏移地址(OFFSET):解压缩数据缓冲区可能出现只有部分数据被解压缩的情况,因此,在下一次将压缩数据读入到下一解压缩缓冲区时,需要将没有被解压的压缩数据再次读入到该下一压缩数据缓冲区,OFFSET为没有被解压的压缩数据在Buffer中的起始偏移地址,从0到OFFSET之间的数据已经被正确解压缩。如果OFFSET值最后等于Buffer的大小,则所有的输入数据都被成功解压缩。
将某一解压缩缓冲区的全部或部分数据解压缩后,就要考虑压缩文件中已经解压缩的数据对应的压缩数据,如果该数据不影响后续解压缩过程,就将该数据删除;如果该数据影响后续解压缩过程,可以将该数据利用另外的数据结构保留以备后续解压缩过程使用,但是可以在硬盘之类的存储空间将该数据删除。在解压缩算法中,与先前数据有依赖关系的含义,可以是和解压后的先前数据有依赖关系,也可以是和未解压的先前数据之间有依赖关系,要根据不同的算法在另外的数据结构中存储对应需要的依赖数据。
图7示意性地示出了解压缩数据缓冲区和输入数据的偏移地址的关系示意图。
图8示意性地示出了方案3的解压缩流程。在步骤S801,开始解压缩过程。在步骤S802,从压缩文件起始点读入一部分压缩数据到一个解压缩数据缓冲区,这个解压缩数据缓冲区就对应图1中的数据块,缓冲区大小可以固定,也可以由用户设定。然后在步骤S803,使用现有的解压缩方法解压读入的该部分数据,获得OFFSET,在解压缩数据缓冲区中,0-OFFSET的数据已经被完全解压缩了,但是需要在步骤S805判断后续解压缩过程是否需要先前数据?如果需要,可以在步骤S806使用另外的内存存储0-OFFSET间的后续解压过程需要的依赖数据,然后进入步骤S807;如果没有数据依赖关系,就可以直接进入步骤S807,从压缩的数据中删除压缩文件起始点到OFFSET之间的数据。步骤S804是输出0-OFFSET之间的解压后的数据,该步骤需要在步骤S803后执行,但是可以在步骤S807之前任意步骤,甚至在循环之内的步骤S807之后执行。
下面将以压缩算法DEFLATE为例进行相应的说明。DEFLATE压缩算法是LZ77压缩算法和哈夫曼编码相结合的压缩算法,被zip、gzip、zlib及png档案广泛使用。DEFLATE算法首先采用LZ77算法进行重复出现“字符串”(注明:这里的“字符串”并不仅仅局限于可显示的字符串,而是任意的bit流)的压缩,之后进一步采用哈夫曼编码进行压缩。
简单的讲,LZ算法被认为是字符串匹配的算法。例如:在一段文本中某字符串经常出现,并且可以通过前面文本中出现的字符串指针来表示。当然这个算法的前提是指针应该比字符串本身要短。如下例所示:
待压缩的文本字符串:Blah blah blah blah blah!
^^
1,2,...6
经过LZ77扫描结果:Blah b[D=5,L=18]!
其中字符串“lah b”重复出现,因此LZ77算法采用[D=5,L=18](通常被认为是字符指针)来压缩后续重复了的字符串。其中D表示距离,L表示长度,其意义就是从***[D,L]的***点(第7个字符处)开始往后的18个字符与“***点减去D的值”开始往后的18个字符一模一样,即:
Blah blah blah blah blah !
1,7...................24!
从***点往后的18个字符串是:lah blah blah blah
从“***点减去D的值”即第二个字符往后的18个字符串是:lah blahblah blah
由于LZ77限定D最长为256字节(需要8bits),L最长是32Kbytes(需要15bits),那么一个[D,L]配对就需要至少23bits,即3bytes。因此,如果重复的字符串的长度大于3即可达到压缩的目的。
为了进一步减少信息冗余,DEFLATE算法对LZ77扫描的结果进行哈夫曼编码,最终压缩的数据的第一部分哈夫曼树包括两个哈夫曼树信息,其中一颗哈夫曼树信息用于对字符串及其对应的长度进行编码;另外一颗哈夫曼树则对***的[D,L]对中的D信息进行编码。
在解压文件之前,两颗哈夫曼树的信息将被首先读入内存进行构建解压所需的哈夫曼树(通常,哈夫曼树信息远远小于压缩数据信息),之后读取压缩数据(采用哈夫曼编码的数据)进行解压。由哈夫曼编码规则可知,每个哈夫曼编码都是可以唯一识别信息的编码,因此,压缩程序在成功识别一个哈夫曼码之后即可将其从压缩文件中删除。
举个简单的哈夫曼编码的例子:
待编码字符串:ABBBACDCAA
其中A(4)B(3)C(2)D(1)分别表示A出现了4次,B出现了3次,C出现了2次,D出现了1次。
其哈夫曼编码如下所示:
x(10)
x(6) A(4)
x(3) B(3)
D(1) C(2)
A:1
B:01
C:001
D:0000
依据哈夫曼压缩之后的字符串为:
1010101100100000 0111(一共不到3Bytes)
此时,如果Buffer=10bit如下所示:
1010101100100000 0111
^=10th Bit
那么,在0到Buffer结束之间最后一个识别的哈夫曼码是:
1 01 01 01 1 0 0100000 0111
^=9th Bit
因为前8bits已经被成功解压,所以可以删除,即OFFSET=8bit;而OFFSET到Buffer结束之间的2bit没有被解压缩,故需要输入下个Buffer。
方法4
在本技术方案中,关键点在于在解压缩过程中,在原始的压缩文件中***TO-BE-REMOVED标志,该标志表明该压缩标志以前的数据都已经被解压缩了,可以被删除,从而达到一边解压缩原始压缩文件,一边删除部分已经解压缩的压缩文件的内容,从而减少在解压缩过程中需要的存储空间。
该方案实际在解压缩过程包含了两个流程,第一个流程是解压缩过程,第二个流程是删除流程,这两个流程是并行的,通过TO-BE-REMOVED标志来交换信息。
图9a示意性地示出了一个优选实施方式的解压缩过程,在该解压缩过程中,首先在步骤S901,开始解压缩过程,解压缩过程也是分块进行解压缩的,假设数据块的大小为N,则在步骤S902,从最后一个TO-BE-REMOVED标志开始读入N字节的压缩数据,对于第一个数据块,由于没有TO-BE-REMOVED标志,可以在压缩文件的开始加入一个TO-BE-REMOVED标志,这样该数据块的处理就和其它的数据块处理完全相同了。然后在步骤S903,解压缩该N个字节的M个字节压缩数据,正如方案3中所陈述的,对解压缩数据缓冲区中的数据进行解压缩时,可能并非全部数据都能够解压缩,可能出现最后的一部分数据,由于其相关的数据没有完全读入解压缩缓冲区,该部分数据最后不能够解压缩。因此,这里我们假设大小为N的数据块中只有M个数据被成功解压缩(M小于等于N)。然后在步骤S905,判断后续解压缩过程是否需要先前数据?如果需要,可以在步骤S906使用另外的内存存储后续解压过程需要的依赖数据,然后进入步骤S907;如果没有数据依赖关系,就可以直接进入步骤S907,在步骤S907,将TO-BE-REMOVED标志***到压缩文件的偏移地址,在该步骤之前,需要执行步骤S904,得到被删除的M个数据结束的偏移地址,该步骤可以在步骤S903之后、步骤S907之前的任何一步执行。这样,一个独立的解压缩过程就可以单独运行了,其在原始的压缩文件中***了若干TO-BE-REMOVED标志,表明该标志之前的数据都可以被删除。
图9b示意性地示出了图9a解压缩过程对应的压缩数据删除过程。该过程首先在步骤S9011开始,在步骤S9012扫描压缩文件,在步骤S9013判断是否在压缩文件中发现TO-BE-REMOVED标志,如果发现该标志,进入步骤S9014,将压缩文件从开始到该标志的数据删除,然后可以继续在步骤S9012扫描压缩文件,如果考虑节省CPU资源,也可以休眠若干时间后,从新开始扫描压缩文件。如果在步骤S9013没有发现该标志,可以继续在步骤S9012扫描压缩文件。
在同一个发明构思下,图10示意性地示出了本发明所用的解压缩***1001,该***包括,输入装置1004,解压缩装置1005,输出装置1006和删除装置1007。输入装置1004用于从压缩文件1002中读入一压缩的数据块;解压缩装置1005用于对所述压缩的数据块进行解压缩;输出装置1006用于将解压缩的数据存储到解压缩文件1003中;删除装置1007用于从所述压缩文件1002中删除已经完成解压缩的压缩数据块。
在一种实施方式中,压缩文件1002中包含了压缩数据的分块信息,优选实施方式中,该分块信息通过所述压缩文件中的数据块表或者所述压缩文件中的数据块之间的压缩标志表示。
在另一种实施方式中,压缩文件1002在压缩时是根据数据块独立压缩的,数据块之间没有相关性。
在另一种实施方式中,解压缩装置1005的处理步骤还包括:对所述压缩的数据块进行解压缩时,只获得该压缩的数据块的部分解压缩结果;对未在所述压缩的数据块完成解压缩的压缩数据,加入到下一个待解压缩的数据块。
在又一种实施方式中,解压缩装置1005还包括:判断装置1008,用于判断后续解压缩过程是否需要先前的数据;以及预处理装置1009,响应于后续解压缩过程需要先前的数据,用于存储后续压缩过程需要的先前的数据。
在另一种实施方式中,由于对解压缩数据缓冲区中的数据进行解压缩时,可能并非全部数据都能够解压缩,可能出现最后的一部分数据,由于其相关的数据没有完全读入解压缩缓冲区,该部分数据最后不能够解压缩,此时对所述未在所述压缩的数据块完成解压缩的压缩数据可以采用输入数据的偏移地址表示。
在又一种实施方式中,解压缩装置1005可以在压缩文件1002中加入TO-BE-REMOVED标志,该标志表明该标志前的数据可以被删除。这时,删除装置1007和其它装置(包括输入装置1004、解压缩装置1005和输出装置1006)之间独立工作,删除装置1007和所述其它装置之间通过所述TO-BE-REMOVED标志交换信息,从而在压缩文件1002中删除已经被完全解压缩的数据。
本发明的***中的模块可以采用由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合实现。
本发明还提供一种程序产品,包含实现以上所有方法的程序代码以及承载该程序代码的承载介质。
虽然这里参照附图描述了本发明的示例性实施例,但是应该理解本发明不限于这些精确的实施例,并且在不背离本发明的范围和宗旨的情况下,本领域普通技术人员能对实施例进行各种变化的修改。所有这些变化和修改意欲包含在所附权利要求中限定的本发明的范围中。
Claims (18)
1.一种对压缩文件进行解压缩的方法,包括:
输入步骤,从所述压缩文件中读入一压缩的数据块;
解压缩步骤,对所述压缩的数据块进行解压缩;
输出步骤,将解压缩的数据存储到解压缩文件中;
删除步骤,从所述压缩文件中删除所述已经解压缩的压缩数据块。
2.根据权利要求1所述的方法,其中,所述压缩文件中包含了压缩数据的分块信息。
3.根据权利要求2所述的方法,其中,其中所述压缩数据的分块信息通过所述压缩文件中的数据块表或者所述压缩文件中的数据块之间的压缩标志表示。
4.根据权利要求3所述的方法,其中所述压缩文件在压缩时是分数据块独立压缩的,数据块之间没有相关性。
5.根据权利要求1所述的方法,其中所述解压缩步骤进一步包括:
对所述压缩的数据块进行解压缩时,只获得该压缩的数据块的部分解压缩结果;
对未在所述压缩的数据块完成解压缩的压缩数据,加入到下一个待解压缩的数据块。
6.根据权利要求1或5所述的方法,其中在所述删除步骤之前还包括:
判断后续解压缩过程是否需要先前的数据;
响应于后续解压缩过程需要先前的数据,存储后续压缩过程需要的先前的数据。
7.根据权利要求5所述的方法,其中所述未在所述压缩的数据块完成解压缩的压缩数据采用输入数据的偏移地址表示。
8.根据权利要求1所述的方法,其中删除步骤和其它步骤是在不同的流程中实现的,其中,所述其它步骤在解压缩流程完成,所述删除步骤在删除流程完成,所述其它步骤包括所述输入步骤,所述解压缩步骤和所述输出步骤。
9.根据权利要求8所述的步骤,其中所述解压缩流程在所述压缩文件中加入标志,该标志表明该标志前的数据可以被删除,所述解压缩流程和删除流程通过所述标志交换信息。
10.一种对压缩文件进行解压缩的***,包括:
输入装置,用于从所述压缩文件中读入一压缩的数据块的装置;
解压缩装置,用于对所述压缩的数据块进行解压缩的装置;
输出装置,用于将解压缩的数据存储到解压缩文件中的装置;
删除装置,用于从所述压缩文件中删除所述已经解压缩的压缩数据块的装置。
11.根据权利要求10所述的***,其中,所述压缩文件中包含了压缩数据的分块信息。
12.根据权利要求11所述的***,其中,所述压缩数据的分块信息通过所述压缩文件中的数据块表或者所述压缩文件中的数据块之间的压缩标志表示。
13.根据权利要求12所述的***,其中所述压缩文件在压缩时是分数据块独立压缩的,数据块之间没有相关性。
14.根据权利要求10所述的方法,其中所述解压缩装置的处理步骤还包括:
对所述压缩的数据块进行解压缩时,只获得该压缩的数据块的部分解压缩结果;
对未在所述压缩的数据块完成解压缩的压缩数据,加入到下一个待解压缩的数据块。
15.根据权利要求10或14所述的***,其中还包括:
判断装置,用于判断后续解压缩过程是否需要先前的数据的装置;
预处理装置,响应于后续解压缩过程需要先前的数据,用于存储后续压缩过程需要的先前的数据的装置。
16.根据权利要求14所述的***,其中所述未在所述压缩的数据块完成解压缩的压缩数据采用输入数据的偏移地址表示。
17.根据权利要求10所述的***,其中所述解压缩装置在所述压缩文件中加入标志,该标志表明该标志前的数据可以被删除。
18.根据权利要求17所述的***,其中所述删除装置和所述其它装置之间独立工作,所述删除装置和所述其它装置之间通过所述标志交换信息,其中,所述其它装置包括所述输入装置、所述解压缩装置和所述输出装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100990364A CN101582067A (zh) | 2008-05-15 | 2008-05-15 | 解压压缩文件时减小存储需求的方法和*** |
US12/464,628 US7924183B2 (en) | 2008-05-15 | 2009-05-12 | Method and system for reducing required storage during decompression of a compressed file |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2008100990364A CN101582067A (zh) | 2008-05-15 | 2008-05-15 | 解压压缩文件时减小存储需求的方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101582067A true CN101582067A (zh) | 2009-11-18 |
Family
ID=41315656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2008100990364A Pending CN101582067A (zh) | 2008-05-15 | 2008-05-15 | 解压压缩文件时减小存储需求的方法和*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US7924183B2 (zh) |
CN (1) | CN101582067A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104660704A (zh) * | 2015-03-06 | 2015-05-27 | 四川智羽软件有限公司 | 一种网站用户数据处理方法 |
CN105843853A (zh) * | 2016-03-16 | 2016-08-10 | 北京小米移动软件有限公司 | 智能设备的清理方法及装置 |
CN106851733A (zh) * | 2016-12-29 | 2017-06-13 | 安徽网新恒天软件有限公司 | 一种针对移动网络应用的自适应http消息压缩方法 |
CN110196836A (zh) * | 2019-03-29 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据存储方法及装置 |
CN110941597A (zh) * | 2018-09-21 | 2020-03-31 | 北京奇虎科技有限公司 | 解压缩文件的清理方法、装置、计算设备及计算机存储介质 |
CN111061693A (zh) * | 2019-12-19 | 2020-04-24 | 深圳市迅雷网络技术有限公司 | 一种下载时解压分卷压缩文件的方法、装置及介质 |
CN111384965A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
CN111884658A (zh) * | 2020-07-09 | 2020-11-03 | 上海兆芯集成电路有限公司 | 数据解压缩方法、数据压缩方法及卷积运算装置 |
CN114116234A (zh) * | 2022-01-24 | 2022-03-01 | 山东捷瑞数字科技股份有限公司 | 一种基于浏览器的三维场景模型解压缩加载方法 |
CN114697309A (zh) * | 2020-12-25 | 2022-07-01 | 北京三快在线科技有限公司 | 文件传输方法、文件处理方法及装置 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2471887B (en) * | 2009-07-16 | 2014-11-12 | Advanced Risc Mach Ltd | A video processing apparatus and a method of processing video data |
US8209303B2 (en) * | 2009-07-29 | 2012-06-26 | Novell, Inc. | System and method for implementing a reliable persistent random access compressed data stream |
KR101074010B1 (ko) | 2009-09-04 | 2011-10-17 | (주)이스트소프트 | 블록 단위 데이터 압축 및 복원 방법 및 그 장치 |
KR101016776B1 (ko) * | 2009-09-21 | 2011-02-25 | (주)이스트소프트 | 상위 호환성 보장형 압축 및 복원 방법 및 장치 |
US10210162B1 (en) * | 2010-03-29 | 2019-02-19 | Carbonite, Inc. | Log file management |
CN101957836B (zh) * | 2010-09-03 | 2012-07-11 | 清华大学 | 一种文件***中可配置的实时透明压缩方法 |
US9875054B2 (en) | 2013-03-06 | 2018-01-23 | Ab Initio Technology Llc | Managing operations on stored data units |
US9959070B2 (en) * | 2013-03-06 | 2018-05-01 | Ab Initio Technology Llc | Managing operations on stored data units |
CN104133796B (zh) * | 2014-08-15 | 2017-08-25 | 广东欧珀移动通信有限公司 | 一种智能移动终端lk中编解码图片的方法及装置 |
CN110311687B (zh) * | 2019-07-09 | 2022-10-04 | 上海天数智芯半导体有限公司 | 一种基于集成算法的时序数据无损压缩方法 |
WO2021222715A1 (en) * | 2020-05-01 | 2021-11-04 | Kinze Manufacturing, Inc. | Shared planter data |
US11762698B2 (en) * | 2021-06-18 | 2023-09-19 | ScaleFlux, Inc. | Techniques to enable stateful decompression on hardware decompression acceleration engines |
CN114172968A (zh) * | 2021-10-26 | 2022-03-11 | 阿里云计算有限公司 | 数据解压缩方法、装置、电子设备、介质及程序产品 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5481701A (en) * | 1991-09-13 | 1996-01-02 | Salient Software, Inc. | Method and apparatus for performing direct read of compressed data file |
DE19524688C1 (de) | 1995-07-06 | 1997-01-23 | Siemens Ag | Verfahren zur Dekodierung und Kodierung eines komprimierten Videodatenstroms mit reduziertem Speicherbedarf |
US6618728B1 (en) | 1996-01-31 | 2003-09-09 | Electronic Data Systems Corporation | Multi-process compression |
JP3408923B2 (ja) | 1996-05-28 | 2003-05-19 | シャープ株式会社 | 画像表示装置 |
US20020029229A1 (en) | 2000-06-30 | 2002-03-07 | Jakopac David E. | Systems and methods for data compression |
US7542465B2 (en) | 2003-03-28 | 2009-06-02 | Broadcom Corporation | Optimization of decoder instance memory consumed by the jitter control module |
US20070016693A1 (en) | 2005-06-30 | 2007-01-18 | Advanced Micro Devices, Inc. | Decompression technique for generating software image |
-
2008
- 2008-05-15 CN CNA2008100990364A patent/CN101582067A/zh active Pending
-
2009
- 2009-05-12 US US12/464,628 patent/US7924183B2/en not_active Expired - Fee Related
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104660704B (zh) * | 2015-03-06 | 2018-10-30 | 四川智羽软件有限公司 | 一种网站用户数据处理方法 |
CN104660704A (zh) * | 2015-03-06 | 2015-05-27 | 四川智羽软件有限公司 | 一种网站用户数据处理方法 |
CN105843853A (zh) * | 2016-03-16 | 2016-08-10 | 北京小米移动软件有限公司 | 智能设备的清理方法及装置 |
CN106851733A (zh) * | 2016-12-29 | 2017-06-13 | 安徽网新恒天软件有限公司 | 一种针对移动网络应用的自适应http消息压缩方法 |
CN110941597B (zh) * | 2018-09-21 | 2023-10-31 | 北京奇虎科技有限公司 | 解压缩文件的清理方法、装置、计算设备及计算机存储介质 |
CN110941597A (zh) * | 2018-09-21 | 2020-03-31 | 北京奇虎科技有限公司 | 解压缩文件的清理方法、装置、计算设备及计算机存储介质 |
CN111384965A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
CN110196836A (zh) * | 2019-03-29 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据存储方法及装置 |
CN110196836B (zh) * | 2019-03-29 | 2024-05-10 | 腾讯云计算(北京)有限责任公司 | 一种数据存储方法及装置 |
CN111061693A (zh) * | 2019-12-19 | 2020-04-24 | 深圳市迅雷网络技术有限公司 | 一种下载时解压分卷压缩文件的方法、装置及介质 |
CN111061693B (zh) * | 2019-12-19 | 2024-02-27 | 深圳市迅雷网络技术有限公司 | 一种下载时解压分卷压缩文件的方法、装置及介质 |
CN111884658A (zh) * | 2020-07-09 | 2020-11-03 | 上海兆芯集成电路有限公司 | 数据解压缩方法、数据压缩方法及卷积运算装置 |
CN114697309A (zh) * | 2020-12-25 | 2022-07-01 | 北京三快在线科技有限公司 | 文件传输方法、文件处理方法及装置 |
CN114116234A (zh) * | 2022-01-24 | 2022-03-01 | 山东捷瑞数字科技股份有限公司 | 一种基于浏览器的三维场景模型解压缩加载方法 |
Also Published As
Publication number | Publication date |
---|---|
US20090284400A1 (en) | 2009-11-19 |
US7924183B2 (en) | 2011-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101582067A (zh) | 解压压缩文件时减小存储需求的方法和*** | |
US10116325B2 (en) | Data compression/decompression device | |
US6532121B1 (en) | Compression algorithm with embedded meta-data for partial record operation augmented with expansion joints | |
US8407378B2 (en) | High-speed inline data compression inline with an eight byte data path | |
CN101783788B (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
CN112953550B (zh) | 数据压缩的方法、电子设备及存储介质 | |
US8937564B2 (en) | System, method and non-transitory computer readable medium for compressing genetic information | |
KR100490240B1 (ko) | 데이타압축장치,데이타복원장치,데이타압축방법,데이타복원방법및프로그램기록매체 | |
JPH07283739A (ja) | 短ブロックのデータを圧縮、伸長するための方法、及び装置 | |
US11791838B2 (en) | Near-storage acceleration of dictionary decoding | |
CN104753540A (zh) | 数据压缩方法、数据解压方法和装置 | |
CN103995887A (zh) | 位图索引压缩方法和位图索引解压方法 | |
CN105808513A (zh) | 转换装置和转换方法 | |
US20160233880A1 (en) | Data compression apparatus and data decompression apparatus | |
Nandi et al. | A compression technique based on optimality of LZW code (OLZW) | |
CN114567331A (zh) | 一种基于lz77的压缩方法、装置及其介质 | |
Storer et al. | A parallel architecture for high-speed data compression | |
CN115408350A (zh) | 日志压缩、日志还原方法、装置、计算机设备和存储介质 | |
US6834283B1 (en) | Data compression/decompression apparatus using additional code and method thereof | |
US7167115B1 (en) | Method, apparatus, and computer-readable medium for data compression and decompression utilizing multiple dictionaries | |
CN102591737A (zh) | 数据写入与读取方法、存储器控制器与存储器储存装置 | |
US7439887B2 (en) | Method and apparatus for GIF decompression using fixed-size codeword table | |
CN1979475A (zh) | 一种压缩文件处理方法 | |
CN103138766A (zh) | 数据压缩与解压缩的方法及装置 | |
CN103198127B (zh) | 大文件排序方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20091118 |