压缩文件的处理方法、装置、计算机设备及存储介质与流程

文档序号:31467884发布日期:2022-09-09 22:10阅读:114来源:国知局
压缩文件的处理方法、装置、计算机设备及存储介质与流程

1.本技术涉及数据处理技术领域,尤其涉及一种压缩文件的处理方法、装置、计算机设备及存储介质。


背景技术:

2.压缩文件通常将原有数据通过特定的压缩算法编码为指定的数据格式,所以在读取时也需要通过特定的解压算法进行解码。对于压缩率较好的压缩算法,可以将数据压缩至原有的十分之一大小。
3.而对于压缩文件的解压,是从压缩文件中解压出对应大小的数据文件,若解压出来的数据文件的数据量较大,则后续对该数据文件的处理效率较低。因此,亟需一种压缩文件的处理方法,以提高从压缩文件中解压出来的数据的处理效率。


技术实现要素:

4.有鉴于此,本技术提供一种压缩文件的处理方法、装置、计算机设备及存储介质,用于提高从压缩文件中解压出来的数据的处理效率。
5.第一方面,本技术实施例提供一种压缩文件的处理方法,该方法包括:
6.将压缩文件划分成多个虚拟文件,所述虚拟文件对应有起始位置和结束位置;所述压缩文件由数据量超过预置数值的数据文件压缩而成;
7.针对每个虚拟文件对应的线程,读取所述压缩文件的起始位置至目标位置的目标压缩数据,所述目标位置在对应虚拟文件的结束位置的预置范围内;
8.对所述目标压缩数据进行解压得到解压数据,根据所述多个虚拟文件在所述压缩文件中的位置关系,获取所述解压数据中与所述虚拟文件对应的目标解压数据,并对所述目标解压数据进行处理。
9.在一个可选的实施例中,所述针对每个虚拟文件对应的线程,读取所述压缩文件的起始位置至目标位置的目标压缩数据,包括:
10.针对每个虚拟文件对应的线程,从所述压缩文件的起始位置顺序读取压缩数据,直至文件指针指向所述虚拟文件对应的结束位置处;所述文件指针用于指示对所述虚拟文件的当前读取位置;
11.读取以所述虚拟文件的结束位置为起始至该虚拟文件的结束位置之后目标位置的压缩数据;
12.将读取的所述压缩文件的起始位置至目标位置的压缩数据确定为目标压缩数据。
13.在一个可选的实施例中,所述针对每个虚拟文件对应的线程,从所述压缩文件的起始位置顺序读取压缩数据,直至文件指针指向所述虚拟文件对应的结束位置处,包括:
14.从所述压缩文件对应的文件指针处读取第一预置长度的压缩数据到缓存中;
15.确定所述虚拟文件对应的结束位置与所述文件指针对应位置的差值是否小于第一距离长度;
16.若确定所述差值小于第一距离长度,则从所述压缩文件对应的文件指针处读取第二预置长度的压缩数据到缓存中,直至读取至虚拟文件的结束位置;所述第二预置长度小于所述第一预置长度。
17.在一个可选的实施例中,所述从所述压缩文件对应的文件指针续读取第二预置长度的压缩数据到缓存中之前,所述方法还包括:
18.确定所述虚拟文件对应的结束位置与所述文件指针对应位置的差值是否小于第二距离长度;所述第二距离长度小于所述第一距离长度;
19.若确定所述差值小于第二距离长度,从所述压缩文件对应的文件指针处读取第二预置长度的压缩数据到缓存中,直至读取至虚拟文件的结束位置;
20.若确定所述差值大于或等于第二距离长度,则从所述压缩文件对应的文件指针处读取第三预置长度的压缩数据到缓存中,并跳转到确定所述虚拟文件对应的结束位置与所述文件指针对应位置的差值是否小于第二距离长度的步骤继续执行;所述第三预置长度大于或等于第二预置长度、且小于所述第一预置长度。
21.在一个可选的实施例中,所述读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后目标位置的压缩数据,包括:
22.读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后长度为n个字节的区域压缩数据;
23.将所述压缩文件的起始位置至虚拟文件的结束位置的压缩数据和区域压缩数据共同作为中间压缩数据;
24.若中间压缩数据不可成功解压,则n=n+1,并跳转到读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后长度为n个字节的区域压缩数据继续执行;
25.若中间压缩数据可成功解压,将在所述虚拟文件的结束位置之后的n个字节对应的位置确定为所述目标位置。
26.在一个可选的实施例中,所述第一预置长度为所述第一距离长度的m倍,所述m小于1。
27.在一个可选的实施例中,所述根据所述多个虚拟文件在所述压缩文件中的位置关系,获取所述解压数据中与所述虚拟文件对应的目标解压数据,包括:
28.获取所述虚拟文件对应的前一个虚拟文件的目标位置;
29.根据所述虚拟文件对应的目标位置和所述前一个虚拟文件的目标位置,获取所述解压数据中与所述虚拟文件对应的目标解压数据。
30.在一个可选的实施例中,所述根据所述多个虚拟文件在所述压缩文件中的位置关系,获取所述解压数据中与所述虚拟文件对应的目标解压数据,包括:
31.获取所述解压数据中最后一个预置分隔符所在的第一位置,以及在所述虚拟文件对应的前一个虚拟文件的解压数据之前最后一个预置分隔符所在的第二位置;
32.将所述解压数据中所述第二位置至所述第一位置之间的数据,确定为所述虚拟文件对应的目标解压数据。
33.在一个可选的实施例中,所述根据所述多个虚拟文件在所述压缩文件中的位置关系,获取所述解压数据中与所述虚拟文件对应的目标解压数据,包括:
34.获取所述解压数据中第一个预置分隔符所在的第三位置,以及在所述虚拟文件的
目标位置之后的第一个预置分隔符所在的第四位置;
35.将所述解压数据中所述第三位置至所述第四位置之间的数据,确定为所述虚拟文件对应的目标解压数据。
36.在一个可选的实施例中,所述预置分隔符至少包括以下中一种:标点符号、预置字符串、预置段落符号。
37.第二方面,本技术实施例还提供一种压缩文件的处理装置,该装置包括:
38.划分模块,用于将压缩文件划分成多个虚拟文件,所述虚拟文件均对应有起始位置和结束位置;所述压缩文件由数据量超过预置数值的数据文件压缩而成;
39.读取模块,用于针对每个虚拟文件对应的线程,读取所述压缩文件的起始位置至目标位置的目标压缩数据,所述目标位置在所述虚拟文件的结束位置的预置范围内;
40.解压模块,用于对所述目标压缩数据进行解压得到解压数据;
41.获取模块,用于根据所述多个虚拟文件在所述压缩文件中的位置关系,获取所述解压数据中与所述虚拟文件对应的目标解压数据;
42.处理模块,用于对所述目标解压数据进行处理。
43.在一个可选的实施例中,读取模块,具体用于:
44.针对每个虚拟文件对应的线程,从所述压缩文件的起始位置顺序读取压缩数据,直至文件指针指向所述虚拟文件对应的结束位置处;所述文件指针用于指示对所述虚拟文件的当前读取位置;
45.读取以所述虚拟文件的结束位置为起始至该虚拟文件的结束位置之后目标位置的压缩数据;
46.将读取的所述压缩文件的起始位置至目标位置的压缩数据确定为目标压缩数据。
47.在一个可选的实施例中,所读取模块,具体用于:
48.从所述压缩文件对应的文件指针处读取第一预置长度的压缩数据到缓存中;
49.确定所述虚拟文件对应的结束位置与所述文件指针对应位置的差值是否小于第一距离长度;
50.若确定所述差值小于第一距离长度,则从所述压缩文件对应的文件指针处读取第二预置长度的压缩数据到缓存中,直至读取至虚拟文件的结束位置;所述第二预置长度小于所述第一预置长度。
51.在一个可选的实施例中,读取模块,具体用于:
52.确定所述虚拟文件对应的结束位置与所述文件指针对应位置的差值是否小于第二距离长度;所述第二距离长度小于所述第一距离长度;
53.若确定所述差值小于第二距离长度,从所述压缩文件对应的文件指针处读取第二预置长度的压缩数据到缓存中,直至读取至虚拟文件的结束位置;
54.若确定所述差值大于或等于第二距离长度,则从所述压缩文件对应的文件指针处读取第三预置长度的压缩数据到缓存中,并跳转到确定所述虚拟文件对应的结束位置与所述文件指针对应位置的差值是否小于第二距离长度的步骤继续执行;所述第三预置长度大于或等于第二预置长度、且小于所述第一预置长度。
55.在一个可选的实施例中,读取模块,具体用于:
56.读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后长度为n个字
节的区域压缩数据;
57.将所述压缩文件的起始位置至虚拟文件的结束位置的压缩数据和区域压缩数据共同作为中间压缩数据;
58.若中间压缩数据不可成功解压,则n=n+1,并跳转到读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后长度为n个字节的区域压缩数据继续执行;
59.若中间压缩数据可成功解压,将在所述虚拟文件的结束位置之后的n个字节对应的位置确定为所述目标位置。
60.在一个可选的实施例中,所述第一预置长度为所述第一距离长度的m倍,所述m小于1。
61.在一个可选的实施例中,获取模块,具体用于:
62.获取所述虚拟文件对应的前一个虚拟文件的目标位置;
63.根据所述虚拟文件对应的目标位置和所述前一个虚拟文件的目标位置,获取所述解压数据中与所述虚拟文件对应的目标解压数据。
64.在一个可选的实施例中,获取模块,具体用于:
65.获取所述解压数据中最后一个预置分隔符所在的第一位置,以及在所述虚拟文件对应的前一个虚拟文件的解压数据之前最后一个预置分隔符所在的第二位置;
66.将所述解压数据中所述第二位置至所述第一位置之间的数据,确定为所述虚拟文件对应的目标解压数据。
67.在一个可选的实施例中,获取模块,具体用于:
68.获取所述解压数据中第一个预置分隔符所在的第三位置,以及在所述虚拟文件的目标位置之后的第一个预置分隔符所在的第四位置;
69.将所述解压数据中所述第三位置至所述第四位置之间的数据,确定为所述虚拟文件对应的目标解压数据。
70.在一个可选的实施例中,所述预置分隔符至少包括以下中一种:标点符号、预置字符串、预置段落符号。
71.第三方面,本技术实施例还提供一种计算机设备,包括:处理器、存储器和总线,存储器存储有处理器可执行的机器可读指令,当计算机设备运行时,处理器与存储器之间通过总线进行通信,机器可读指令被所述处理器运行时执行第一方面的压缩文件的处理方法的步骤。
72.第四方面,本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述第一方面中的压缩文件的处理方法的步骤。
73.本技术提供的一种压缩文件的处理方法、装置、计算机设备及存储介质,首先将压缩文件划分成多个虚拟文件,每个虚拟文件均对应有起始位置和结束位置,然后针对每个虚拟文件使用不同的线程读取压缩文件的起始位置至目标位置的目标压缩数据,所述目标位置在虚拟文件的结束位置的预置范围内,最后对目标压缩数据进行解压得到解压数据,根据多个虚拟文件在压缩文件中的位置关系,获取解压数据中与虚拟文件对应的目标解压数据,并对目标解压数据进行处理。与目前只能从压缩文件中解压出原数据量的数据文件相比,本技术在数据解压过程中将原数据量超过一定数值的数据文件拆分成多个数据文
件,即本技术通过多线程并行对压缩文件进行解压得到多份解压数据,然后通过线程对解压数据进行并行处理,从而通过本技术可以提高从压缩文件中解压出来的数据的处理效率。
74.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
75.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
76.图1示出了本技术实施例所提供的一种压缩文件的处理方法的流程图;
77.图2示出了本技术实施例所提供的一种读取目标压缩数据的方法流程图;
78.图3示出了本技术实施例所提供的一种读取压缩数据的流程图;
79.图4示出了本技术实施例所提供一种压缩文件的处理装置的结构框图。
具体实施方式
80.本技术说明书和权利要求书及上述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
81.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
82.在本技术的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,a/b可以表示a或b;本技术中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,其中a,b可以是单数或者复数。并且,在本技术的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
83.在本技术实施例中,至少一个还可以描述为一个或多个,多个可以是两个、三个、四个或者更多个,本技术不做限制。
84.如图1所示,本技术实施例提供一种压缩文件的处理方法,本技术提供的压缩文件的处理方法可以包括:
85.s101、将压缩文件划分成多个虚拟文件,所述虚拟文件均对应有起始位置和结束位置。
86.其中,所述压缩文件由一个数据文件压缩而成,且该数据文件的数据量超过预置数值。该预置数值根据实际需求设定,具体可以为1g、5g、10g等,本技术不作具体限定。在本实施例中,起始位置和结束位置用于表示虚拟文件在压缩文件中的相对偏移位置,即在压
缩文件中虚拟文件对应的文件指的开始位置和结束位置,如起始位置为文件指针在10000的位置;结束位置为文件指针在20000的位置。本实施例中的虚拟文件并非真正的将压缩文件切分成多个文件,而是为后续得到多份目标解压数据提供基础,即根据每个虚拟文件的起始位置和结束位置从压缩文件中确定对应目标解压数据。具体的,本实施例可以根据压缩文件或数据文件的数据量大小确定划分的虚拟文件的数量,或根据并行处理数据文件的数量确定划分的虚拟文件的数量,本实施例对此不做具体限定。
87.例如,压缩文件的数据量为3g,可并行处理该压缩文件的线程为3个,则可以将该压缩文件划分成3个虚拟文件。其中,第一个虚拟文件的起始位置至结束位置为0-1g、第二个虚拟文件的起始位置至结束位置为1g-2g、第三个虚拟文件的起始位置至结束位置为2g-3g。
88.又例如,数据量为4g的数据文件经过压缩得到的压缩文件的数据量为2g,若并行处理数据文件的数据量大小为1g,则将压缩文件划分成4个虚拟文件。其中,第一个虚拟文件的起始位置至结束位置为0-0.5g、第二个虚拟文件的起始位置至结束位置为0.5g-1g、第三个虚拟文件的起始位置至结束位置为1g-1.5g,第四个虚拟文件的起始位置至结束位置为1.5g-2g。
89.s102、针对每个虚拟文件对应的线程,读取压缩文件的起始位置至目标位置的目标压缩数据。
90.其中,压缩文件的起始地址用于指示压缩文件的数据起始位置(如起始位置为0),所述目标位置对应的虚拟文件的结束位置的预置范围内,该预置范围为以虚拟文件的结束位置为原点,在该原点之前或是之后的一定数量的字节内。具体的,该预置范围的可以设置的固定而数值,如4个字节、8个字节、32个字节、64个字节等;还可以根据压缩文件所对应的压缩算法确定,本实施例对预置范围不做具体限定。
91.在本实施例中,通过多个线程确定目标压缩数据,每个线程可以对应处理一个或多个虚拟文件,即每个线程至少可确定一份目标压缩数据。例如,将压缩文件划分成3个虚拟文件,其中,第一个虚拟文件的起始位置至结束位置为0-1g、第二个虚拟文件的起始位置至结束位置为1g-2g、第三个虚拟文件的起始位置至结束位置为2g-3g。若使用3个线程对压缩文件进行处理,则每个线程对应处理一个虚拟文件。具体的,通过线程1读取压缩文件的起始位置至第一个虚拟文件的结束位置的预置范围(0-1g的预置范围内)内的目标压缩数据,通过线程2读取压缩文件的起始位置至第二个虚拟文件的结束位置的预置范围内(0-2g的预置范围内)的目标压缩数据,通过线程3读取压缩文件的起始位置至第三个虚拟文件的结束位置的预置范围(0-3g的预置范围内)内的目标压缩数据。
92.s103、对目标压缩数据进行解压得到解压数据,根据多个虚拟文件在压缩文件中的位置关系,获取解压数据中与虚拟文件对应的目标解压数据,并对目标解压数据进行处理。
93.其中,目标解压数据包含于数据文件,即目标解压数据是数据文件的子集。对目标解压数据进行处理包括但不限于以下处理:数据查询操作、图片处理操作、视频处理操作等需要消耗较多时间的操作。
94.需要说明的是,本实施例中的步骤s102和步骤s103对应的内容均是针对每个虚拟文件对应的线程进行执行的。即针对每个虚拟文件对应的线程,首先读取压缩文件的起始
位置至目标位置的目标压缩数据,然后对目标压缩数据进行解压得到解压数据,根据虚拟文件在压缩文件中的位置关系,获取解压数据中与虚拟文件对应的目标解压数据,并对目标解压数据进行处理。
95.在本技术提供的一个可选实施例中,所述获取所述解压数据中与所述虚拟文件对应的目标解压数据,包括:获取所述虚拟文件对应的前一个虚拟文件的目标位置;根据所述虚拟文件对应的目标位置和所述前一个虚拟文件的目标位置,获取所述解压数据中与所述虚拟文件对应的目标解压数据。
96.例如,第一个虚拟文件的起始位置至结束位置为0-1g、第二个虚拟文件的起始位置至结束位置为1g-2g、第三个虚拟文件的起始位置至结束位置为2g-3g。若通过线程1读取压缩文件的起始位置至第一个虚拟文件的目标位置1.01g(该目标位置1.01g在第一个虚拟文件的结束位置的预置范围)内的目标压缩数据;通过线程2读取压缩文件的起始位置至第二个虚拟文件的目标位置2.03g的目标压缩数据;通过线程3读取压缩文件的起始位置至第三个虚拟文件的结束位置3g内的目标压缩数据。在每个线程对获取到的目标压缩数据进行解压得到解压数据之后,该线程根据虚拟文件在压缩文件中的位置关系获取解压数据中与虚拟文件对应的目标解压数据。由于本例中的第一个虚拟文件的目标位置为1.01g、第二个虚拟文件的目标位置为2.03g,则根据虚拟文件对应的目标位置和前一个虚拟文件的目标位置,获取第一个虚拟文件的目标解压数据为(0-1.01g)、第二个虚拟文件的目标解压数据为(1.01g-2.03g),第三个虚拟文件的目标解压数据为(2.03g-3g)。
97.需要说明的是,由于本实施例中的是采用多线程处理机制,且每个线程读取和解压的数据量是不同的,因此优先确定出目标位置线程,可将该目标位置发送给其对应另一个线程,以便于另一个线程根据该目标位置确定目标解压数据。针对上例,线程1确定出第一虚拟文件的目标位置之后,将第一虚拟文件的目标位置发送给线程2,线程2确定出第二虚拟文件的目标位置之后,将第二虚拟文件的目标位置发送给线程3。以此实心确定各个虚拟文件分别对应的目标解压数据。
98.在本技术提供的一个可选实施例中,所述获取所述解压数据中与所述虚拟文件对应的目标解压数据,包括:获取所述解压数据中最后一个预置分隔符所在的第一位置,以及在所述虚拟文件对应的前一个虚拟文件的目标位置之前第一个预置分隔符所在的第二位置;将所述解压数据中所述第二位置至所述第一位置之间的数据,确定为所述虚拟文件对应的目标解压数据。其中,所述预置分隔符至少包括以下中一种:标点符号、预置字符串、预置段落符号。
99.例如,将压缩文件划分成3个虚拟文件,分别为第一个虚拟文件、第二个虚拟文件和第三个虚拟文件。首先确定第一个虚拟文件对应的解压数据中最后一个预置分隔符的位置为位置a,第二个虚拟文件对应的解压数据中最后一个预置分隔符的位置为位置b,则第一虚拟文件对应的目标解压数据为解压数据中的起始位置至位置a,第二虚拟文件对应的目标解压数据为解压数据中的位置a至位置b,第三虚拟文件对应的目标解压数据为解压数据中的位置b至解压数据的结束位置。
100.在本技术提供的一个可选实施例中,所述获取所述解压数据中与所述虚拟文件对应的目标解压数据,包括:获取所述解压数据中第一个预置分隔符所在的第三位置,以及在所述虚拟文件的目标位置之后的第一个预置分隔符所在的第四位置;将所述解压数据中所
述第三位置至所述第四位置之间的数据,确定为所述虚拟文件对应的目标解压数据。需要说明的是,若虚拟文件为压缩文件中对应的第一个虚拟文件或最后一个虚拟文件,则第一个虚拟文件对应的目标解压数据为解压数据中的起始位置至位置a,最后一个虚拟文件对应的目标解压数据为解压数据中的位置b至解压数据的结束位置。其中,位置a为第二个虚拟文件对应的解压数据中第一个预置分隔符所在的位置,位置b为倒数第二个虚拟文件的目标位置之后的第一个预置分隔符所在的位置。
101.例如,将压缩文件划分成3个虚拟文件,分别为第一个虚拟文件、第二个虚拟文件和第三个虚拟文件。首先确定第二个虚拟文件对应的解压数据中第一个预置分隔符所在的第一位置a,第二虚拟文件的目标位置之后的第一个预置分隔符所在的第二位b,则第一虚拟文件对应的目标解压数据为解压数据中的起始位置至位置a,第二虚拟文件对应的目标解压数据为解压数据中的位置a至位置b,第三虚拟文件对应的目标解压数据为解压数据中的位置b至解压数据的结束位置。
102.本实施例在得到与虚拟文件对应的目标解压数据之后,需要验证目标解压数据是否为成功解压成功的数据,具体通过匹配目标解压数据与数据文件,确定目标解压数据是否为数据文件的子集,若目标解压数据为数据文件的子集,则可对该目标数据解压数据进行处理;若目标解压数据不是数据文件的子集,说明解压的目标解压数据存在错误,此时可输出告警信息,用于提示用户压缩文件解压不成功。
103.本技术实施例提供的一种压缩文件的处理方法,首先将压缩文件划分成多个虚拟文件,每个虚拟文件均对应有起始位置和结束位置,然后针对每个虚拟文件使用不同的线程读取压缩文件的起始位置至目标位置的目标压缩数据,所述目标位置在虚拟文件的结束位置的预置范围内,最后对目标压缩数据进行解压得到解压数据,根据多个虚拟文件在压缩文件中的位置关系,获取解压数据中与虚拟文件对应的目标解压数据,并对目标解压数据进行处理。与目前只能从压缩文件中解压出原数据量的数据文件相比,本技术在解压过程中将原数据量超过一定数值的数据文件拆分成多个数据文件,即本技术通过多线程并行对压缩文件进行解压得到多份解压数据,然后通过线程对解压数据进行并行处理,从而通过本技术可以提高从压缩文件中解压出来的数据的处理效率。
104.如图2所示,在本发明提供的一个可选实施例中,读取目标压缩数据流程如下所示:
105.s201、针对每个虚拟文件对应的线程,从压缩文件的起始位置顺序读取压缩数据,直至文件指针指向虚拟文件对应的结束位置处。
106.其中,所述文件指针用于指示对虚拟文件的当前读取位置,每对压缩数据之后,便对文件指针进行更新。
107.如图3所示,针对每个虚拟文件对应的线程,从压缩文件的起始位置顺序读取压缩数据,直至文件指针指向虚拟文件对应的结束位置处,包括:
108.s21、从压缩文件对应的文件指针处读取第一预置长度的压缩数据到缓存中。
109.其中,第一预置长度可以为每次从磁盘中加载数据量的大小,该第一预置长度可以为1kb、2kb等,本实施例对此不做具体限定。进一步的,第一预置长度根据所述虚拟文件的数据长度确定。
110.s22、确定虚拟文件对应的结束位置与文件指针对应位置的差值是否小于第一距
离长度。
111.其中,虚拟文件对应的结束位置与文件指针对应位置的差值,即文件指针即将到达虚拟文件对应的结束位置的距离。具体的,第一预置长度为第一距离长度的m倍,m小于1。优选的,第一距离长度通常取第一预置长度的1.1倍。
112.s23、若确定差值小于第一距离长度,从压缩文件对应的文件指针处读取第三预置长度的压缩数据到缓存中。
113.其中,所述第三预置长度大于或等于第二预置长度、且小于第一预置长度。
114.在本实施例中,若确定差值大于或等于第一距离长度,跳转到步骤s21从压缩文件中读取第一预置长度的压缩数据到缓存中继续执行。
115.s24、确定虚拟文件对应的结束位置与文件指针对应位置的差值是否小于第二距离长度。
116.其中,所述第二距离长度小于所述第一距离长度。
117.s25、若确定差值小于第二距离长度,从压缩文件对应的文件指针处读取第二预置长度的压缩数据到缓存中。
118.其中,第一预置长度具体可以为1个字节。
119.相反的,若确定差值大于或等于第二距离长度,则跳转到步骤s23从压缩文件对应的文件指针出读取第三预置长度的压缩数据到缓存中。
120.s26、确定文件指针是否在虚拟文件对应的结束位置处。
121.若文件指针不在虚拟文件对应的结束位置处,则跳转执行s25从压缩文件对应的文件指针处读取第二预置长度的压缩数据到缓存中;若文件指针在虚拟文件对应的结束位置处,则结束目标压缩数据的读取流程。
122.s202、读取以虚拟文件的结束位置为起始至该虚拟文件的结束位置之后目标位置的压缩数据。
123.在本技术提供的一个可选实施例中,读取以虚拟文件的结束位置为起始至该虚拟文件的结束位置之后目标位置的压缩数据包括:逐次读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后目标位置的压缩数据。其中,所述目标位置与所述虚拟文件的结束位置之间的数据长度是逐次按字节递增的。
124.其中,逐次读取以虚拟文件的结束位置为起始至虚拟文件的结束位置之后目标位置的压缩数据,若虚拟文件为压缩文件中的最后一个文件,则该目标位置为压缩文件的结束位置。
125.在本发明提供的一个可选实施例中,所述读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后目标位置的压缩数据,包括:
126.读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后长度为n个字节的区域压缩数据,所述n的初始值为1个字节;
127.将所述压缩文件的起始位置至虚拟文件的结束位置的压缩数据和区域压缩数据共同作为中间压缩数据;
128.若中间压缩数据不可成功解压,则n=n+1,并跳转到读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后长度为n个字节的区域压缩数据继续执行;
129.若中间压缩数据可成功解压,将在所述虚拟文件的结束位置之后的n个字节对应
的位置确定为所述目标位置。
130.s203、将读取的压缩文件的起始位置至目标位置的压缩数据确定为目标压缩数据。
131.对于本技术实施例,首先从压缩文件的起始位置顺序读取压缩数据,直至文件指针指向虚拟文件对应的结束位置处,然后读取以虚拟文件的结束位置为起始至虚拟文件的结束位置之后目标位置的压缩数据,或读取虚拟文件的结束位置为起始至虚拟文件的结束位置之前目标位置的压缩数据,最后将读取的压缩文件的起始位置至目标位置的压缩数据确定为目标压缩数据。从而通过本技术实现将一个压缩文件划分成多份目标压缩数据,以通过多线程对多份目标压缩数据进行并行处理,从而通过本技术实施例提高了从压缩文件中解压出来的数据的处理效率。
132.本技术实施例可以根据上述方法示例对压缩文件的处理装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
133.在采用对应各个功能划分各个功能模块的情况下,图4示出了上述和实施例中涉及的压缩文件的处理装置的一种可能的组成示意图,如图4所示,该压缩文件的处理装置可以包括:划分模块41、读取模块42、解压模块43、获取模块44、处理模块45。
134.划分模块41,用于将压缩文件划分成多个虚拟文件,所述虚拟文件均对应有起始位置和结束位置;所述压缩文件由数据量超过预置数值的数据文件压缩而成;
135.读取模块42,用于针对每个虚拟文件对应的线程,读取所述压缩文件的起始位置至目标位置的目标压缩数据,所述目标位置在所述虚拟文件的结束位置的预置范围内;
136.解压模块43,用于对所述目标压缩数据进行解压得到解压数据;
137.获取模块44,用于根据所述多个虚拟文件在所述压缩文件中的位置关系,获取所述解压数据中与所述虚拟文件对应的目标解压数据;
138.处理模块45,用于对所述目标解压数据进行处理。
139.在一个可选的实施例中,读取模块42,具体用于:
140.针对每个虚拟文件对应的线程,从所述压缩文件的起始位置顺序读取压缩数据,直至文件指针指向所述虚拟文件对应的结束位置处;所述文件指针用于指示对所述虚拟文件的当前读取位置;
141.读取以所述虚拟文件的结束位置为起始至该虚拟文件的结束位置之后目标位置的压缩数据;
142.将读取的所述压缩文件的起始位置至目标位置的压缩数据确定为目标压缩数据。
143.在一个可选的实施例中,所读取模块42,具体用于:
144.从所述压缩文件对应的文件指针处读取第一预置长度的压缩数据到缓存中;
145.确定所述虚拟文件对应的结束位置与所述文件指针对应位置的差值是否小于第一距离长度;
146.若确定所述差值小于第一距离长度,则从所述压缩文件对应的文件指针处读取第二预置长度的压缩数据到缓存中,直至读取至虚拟文件的结束位置;所述第二预置长度小
于所述第一预置长度。
147.在一个可选的实施例中,读取模块42,具体用于:
148.确定所述虚拟文件对应的结束位置与所述文件指针对应位置的差值是否小于第二距离长度;所述第二距离长度小于所述第一距离长度;
149.若确定所述差值小于第二距离长度,从所述压缩文件对应的文件指针处读取第二预置长度的压缩数据到缓存中,直至读取至虚拟文件的结束位置;
150.若确定所述差值大于或等于第二距离长度,则从所述压缩文件对应的文件指针处读取第三预置长度的压缩数据到缓存中,并跳转到确定所述虚拟文件对应的结束位置与所述文件指针对应位置的差值是否小于第二距离长度的步骤继续执行;所述第三预置长度大于或等于第二预置长度、且小于所述第一预置长度。
151.在一个可选的实施例中,读取模块42,具体用于:
152.读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后长度为n个字节的区域压缩数据;
153.将所述压缩文件的起始位置至虚拟文件的结束位置的压缩数据和区域压缩数据共同作为中间压缩数据;
154.若中间压缩数据不可成功解压,则n=n+1,并跳转到读取以所述虚拟文件的结束位置为起始至虚拟文件的结束位置之后长度为n个字节的区域压缩数据继续执行;
155.若中间压缩数据可成功解压,将在所述虚拟文件的结束位置之后的n个字节对应的位置确定为所述目标位置。
156.在一个可选的实施例中,所述第一预置长度为所述第一距离长度的m倍,所述m小于1。
157.在一个可选的实施例中,获取模块44,具体用于:
158.获取所述虚拟文件对应的前一个虚拟文件的目标位置;
159.根据所述虚拟文件对应的目标位置和所述前一个虚拟文件的目标位置,获取所述解压数据中与所述虚拟文件对应的目标解压数据。
160.在一个可选的实施例中,获取模块44,具体用于:
161.获取所述解压数据中最后一个预置分隔符所在的第一位置,以及在所述虚拟文件对应的前一个虚拟文件的解压数据之前最后一个预置分隔符所在的第二位置;
162.将所述解压数据中所述第二位置至所述第一位置之间的数据,确定为所述虚拟文件对应的目标解压数据。
163.在一个可选的实施例中,获取模块44,具体用于:
164.获取所述解压数据中第一个预置分隔符所在的第三位置,以及在所述虚拟文件的目标位置之后的第一个预置分隔符所在的第四位置;
165.将所述解压数据中所述第三位置至所述第四位置之间的数据,确定为所述虚拟文件对应的目标解压数据。
166.在一个可选的实施例中,所述预置分隔符至少包括以下中一种:标点符号、预置字符串、预置段落符号。
167.基于同一申请构思,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例提
供的压缩文件的处理方法的步骤。
168.具体地,所述存储介质能够为通用的存储介质,如移动磁盘、硬盘等,所述存储介质上的计算机程序被运行时,能够执行上述压缩文件的处理方法,本技术与目前只能从压缩文件中解压出原数据量的数据文件相比,本技术在解压过程中将原数据量超过一定数值的数据文件拆分成多个数据文件,即本技术通过多线程并行对压缩文件进行解压得到多份解压数据,然后通过线程对解压数据进行并行处理,从而通过本技术可以提高从压缩文件中解压出来的数据的处理效率。
169.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本技术所提供的几个实施例中,应所述理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
170.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
171.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
172.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者所述技术方案的部分可以以软件产品的形式体现出来,所述计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
173.以上仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1