CN113111040B - 一种文件解压方法及装置 - Google Patents

一种文件解压方法及装置 Download PDF

Info

Publication number
CN113111040B
CN113111040B CN202110430107.XA CN202110430107A CN113111040B CN 113111040 B CN113111040 B CN 113111040B CN 202110430107 A CN202110430107 A CN 202110430107A CN 113111040 B CN113111040 B CN 113111040B
Authority
CN
China
Prior art keywords
decompressed
file
decompression
compression unit
compressed file
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.)
Active
Application number
CN202110430107.XA
Other languages
English (en)
Other versions
CN113111040A (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.)
Zheng Xuchun
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN202110430107.XA priority Critical patent/CN113111040B/zh
Publication of CN113111040A publication Critical patent/CN113111040A/zh
Application granted granted Critical
Publication of CN113111040B publication Critical patent/CN113111040B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files

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

本申请涉及数据处理技术领域,本申请公开一种文件解压方法及装置,该文件解压方法包括:获取待解压的压缩文件,所述待解压的压缩文件包括N个分片压缩单元;将所述N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将所述N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元;获取所述第二分片压缩单元对应的第二解压数据;对所述第一分片压缩单元进行解压,将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。采用本申请的方法,可以减少文件解压中断后重新从头开始解压造成的时间损耗,提高解压效率。

Description

一种文件解压方法及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种文件解压方法及装置。
背景技术
随着信息科技的不断发展,互联网中出现了海量的电子数据,包括视频、音频、图像和文本等文件类型。由于网络带宽和存储容量的限制,在传输或保存过程中要对文件进行压缩,而在处理过程中要对压缩文件进行解压缩。
目前行业中对压缩文件进行解压时,一旦异常或者人为中断,都需要重新进行再次解压。当压缩文件数量较多或压缩文件很大时,解压速度缓慢,如果每次解压中断后,都重新从头开始解压,那么解压效率低且浪费时间。
发明内容
基于此,有必要针对上述技术问题,提供一种文件解压方法及装置,能够对压缩文件中未解压的分片压缩单元进行解压,对已解压的分片压缩单元不再重复解压,从而减少文件解压中断后重新从头开始解压造成的时间损耗,提高解压效率。
第一方面,本申请实施例提供了一种文件解压方法,包括:
获取待解压的压缩文件,所述待解压的压缩文件包括N个分片压缩单元,所述N为正整数;
将所述N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将所述N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,其中,所述第二分片压缩单元在解压中断时已完成解压;
获取所述第二分片压缩单元对应的第二解压数据;
对所述第一分片压缩单元进行解压,将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。
在一种可能的实现方式中,所述将所述N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将所述N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,包括:
从数据库中获取所述待解压的压缩文件对应的解压进度表,所述解压进度表中包括所述待解压的压缩文件包括的N个分片压缩单元的文件编号,以及所述待解压的压缩文件中已解压的分片压缩单元的文件编号;
将所述N个分片压缩单元的文件编号中除所述已解压的分片压缩单元的文件编号之外的分片压缩单元的文件编号所指向的分片压缩单元确定为所述第一分片压缩单元,以及将所述解压进度表中记载的已解压的分片压缩单元的文件编号所指向的分片压缩单元确定为所述第二分片压缩单元。
在一种可能的实现方式中,所述方法还包括:
当所述待解压的压缩文件中的分片压缩单元完成解压时,从所述分片压缩单元的压缩头信息中提取所述分片压缩单元的文件编号,并将所述文件编号添加至所述解压进度表中。
在一种可能的实现方式中,所述对所述第一分片压缩单元进行解压,并将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据,包括:
按照所述第一分片压缩单元的文件编号的数值顺序,依次对所述第一分片压缩单元进行解压;
在发生中断的情况下,将解压完成的第一分片压缩单元对应的解压数据确定为所述第一解压数据;
将所述第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。
在一种可能的实现方式中,所述获取所述第二分片压缩单元对应的第二解压数据,包括:
计算所述待解压的压缩文件的MD5值;
以所述MD5值作为查询条件,从数据库中查询与所述待解压的压缩文件对应的解压关联文件;
将所述解压关联文件包括的子文件的文件标识和预设文件标识进行比对;
若所述子文件的文件标识和预设文件标识一致,提取所述子文件中的数据作为所述第二分片压缩单元对应的第二解压数据。
在一种可能的实现方式中,所述获取待解压的压缩文件,包括:
获取待比对的压缩文件,将所述待比对的压缩文件的文件格式和预设文件格式进行比对;
若所述文件格式和预设文件格式一致,将所述待比对的压缩文件确定为待解压的压缩文件。
在一种可能的实现方式中,所述将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据之后,所述方法还包括:
获取所述解压进度表中包括的已解压的分片压缩单元的文件编号的个数,若所述文件编号的个数等于N,将所述待解压的压缩文件的解压数据作为所述待解压的压缩文件的最终文件解压数据;
输出通知消息,所述通知消息用于通知对所述待解压的压缩文件解压完成。
第二方面,本申请实施例提供一种装置,包括:
第一获取单元,用于获取待解压的压缩文件,所述待解压的压缩文件包括N个分片压缩单元,所述N为正整数;
第一确定单元,用于将所述N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将所述N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,其中,所述第二分片压缩单元在解压中断时已完成解压;
第二获取单元,用于获取所述第二分片压缩单元对应的第二解压数据;
解压单元,用于对所述第一分片压缩单元进行解压,将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。
在一种可能的设计中,所述第一确定单元具体用于:
从数据库中获取所述待解压的压缩文件对应的解压进度表,所述解压进度表中包括所述待解压的压缩文件包括的N个分片压缩单元的文件编号,以及所述待解压的压缩文件中已解压的分片压缩单元的文件编号;
将所述N个分片压缩单元的文件编号中除所述已解压的分片压缩单元的文件编号之外的分片压缩单元的文件编号所指向的分片压缩单元确定为所述第一分片压缩单元,以及将所述解压进度表中记载的已解压的分片压缩单元的文件编号所指向的分片压缩单元确定为所述第二分片压缩单元。
在一种可能的设计中,所述装置还包括:
更新单元,用于当所述待解压的压缩文件中的分片压缩单元完成解压时,从所述分片压缩单元的压缩头信息中提取所述分片压缩单元的文件编号,并将所述文件编号添加至所述解压进度表中。
在一种可能的设计中,所述解压单元具体用于:
按照所述第一分片压缩单元的文件编号的数值顺序,依次对所述第一分片压缩单元进行解压;
在发生中断的情况下,将解压完成的第一分片压缩单元对应的解压数据确定为所述第一解压数据;
将所述第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。
在一种可能的设计中,所述第二获取单元具体用于:
计算所述待解压的压缩文件的MD5值;
以所述MD5值作为查询条件,从数据库中查询与所述待解压的压缩文件对应的解压关联文件;
将所述解压关联文件包括的子文件的文件标识和预设文件标识进行比对;
若所述子文件的文件标识和预设文件标识一致,提取所述子文件中的数据作为所述第二分片压缩单元对应的第二解压数据。
在一种可能的设计中,所述第一获取单元具体用于:
获取待比对的压缩文件,将所述待比对的压缩文件的文件格式和预设文件格式进行比对;
若所述文件格式和预设文件格式一致,将所述待比对的压缩文件确定为待解压的压缩文件。
在一种可能的设计中,所述装置还包括:
第三获取单元,用于获取所述解压进度表中包括的已解压的分片压缩单元的文件编号的个数;
第二确定单元,用于若所述文件编号的个数等于N,将所述待解压的压缩文件的解压数据作为所述待解压的压缩文件的最终文件解压数据;
输出单元,用于输出通知消息,所述通知消息用于通知对所述待解压的压缩文件解压完成。
第三方面,本申请实施例提供一种文件解压装置,所述文件解压装置包括处理器、存储器以及通信接口,所述处理器、存储器和通信接口相互连接,其中,所述通信接口用于接收和发送数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,执行第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现上述第一方面所述的方法。
本申请实施例中,获取包括N个分片压缩单元的待解压的压缩文件,将N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,获取第二分片压缩单元对应的第二解压数据,对第一分片压缩单元进行解压,将解压完成的第一解压数据和第二解压数据作为待解压的压缩文件的解压数据。即先获取上次解压中断后压缩文件中已解压的分片压缩单元对应的解压数据;在本次解压过程,针对上次未解压的分片压缩单元继续解压,而不再对已解压的分片压缩单元进行重新解压;将上次解压得到的解压数据和本次解压得到的解压数据作为压缩文件的解压数据。因此,采用本申请实施例,可以减少文件解压中断后重新从头开始解压造成的时间损耗,提高解压效率。
附图说明
为了说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种文件解压方法的流程图;
图2为本申请实施例提供的另一种文件解压方法的流程图;
图3为本申请实施例提供的一种文件解压装置的结构示意图;
图4为本申请实施例提供的另一种文件解压装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
请参见图1,图1为本申请实施例提供的一种文件解压方法的流程示意图。如图1所示,本申请实施例的文件解压方法可以包括以下步骤S101-步骤S104。
S101,获取待解压的压缩文件,该压缩文件包括N个分片压缩单元,N为正整数。
本申请实施例中,待解压的压缩文件并不是任意一种文件格式的压缩文件,而是通过特定压缩方法得到的压缩文件,因此获取的待解压的压缩文件包括N个分片压缩单元,对压缩文件进行解压,实际上需要对这N个分片压缩单元进行解压。
其中,获取待解压的压缩文件,具体可以包括:获取待比对的压缩文件,将该待比对的压缩文件的文件格式和预设文件格式进行比对;若该文件格式和预设文件格式一致,将该待比对的压缩文件确定为待解压的压缩文件。即先判断获取的压缩文件是不是预设文件格式的压缩文件,若是,才将获取的压缩文件确定为待解压的压缩文件。
该预设文件格式是指,该文件格式的压缩文件通过采用特定的压缩过程得到,该特定的压缩过程包括:对文件按照设定的大小进行分片,对得到的分片文件分别依次压缩,得到多个分片压缩单元,将所有的分片压缩单元打包得到压缩文件。
因此,判断该压缩文件是否为预设文件格式的压缩文件,实质上是指判断该压缩文件是否符合以下条件:该压缩文件包括N个分片压缩单元,每个分片压缩单元通过对设定大小的分片文件进行压缩得到,分片文件是压缩前对整个文件按照设定的大小进行分片得到的,分片压缩单元中包括该分片文件的大小、位置等信息。
S102,将该N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将该N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元。
本申请实施例中,待解压的压缩文件包括N个分片压缩单元,这N个分片压缩单元可以都是未解压的分片压缩单元,即整个压缩文件都未解压;或者,这N个分片压缩单元中有一部分分片压缩单元未解压,另外的分片压缩单元已解压,此时整个压缩文件只解压了一部分,未解压完成(即上次解压发生了中断)。因此,需要针对未解压的分片压缩单元进行解压,从N个分片压缩单元中找到未解压的分片压缩单元,对这些未解压的分片压缩单元进行解压处理,即将该N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,以便后续对第一分片压缩单元进行解压。并将该N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,其中,第二分片压缩单元在上次解压过程中解压发生中断时已完成解压。
具体的,将该N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将该N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,可以通过以下的方法来确定:
压缩文件在压缩时就为其设置一个解压进度表,先在其中记录压缩文件包括的N个分片压缩单元的文件编号;之后,在对压缩文件进行解压时,在解压进度表中记录该压缩文件的解压进度信息,该解压进度表可以保存在数据库中,和该压缩文件一一对应。
从数据库中获取该待解压的压缩文件对应的解压进度表,即获取解压进度表中的解压进度信息,该解压进度信息可以包括压缩文件中已解压的分片压缩单元的文件编号。这样实际上通过获取解压进度表中包括的文件编号,可以确定已经解压完成的分片压缩单元,进而获取该压缩文件当前的解压进度。可选的,解压进度信息还可以包括分片压缩单元完成解压的时间。
具体的,解压进度表包括的N个分片压缩单元的文件编号中除已解压的分片压缩单元的文件编号之外的文件编号,即为未解压的分片压缩单元的文件编号;将这些文件编号所指向的的分片压缩单元,确定为第一分片压缩单元。这样,根据解压进度表中记录的解压进度信息,可以找到N个分片压缩单元中未解压的分片压缩单元,从而针对这些未解压的分片压缩单元进行解压。
将该解压进度表中记载的已解压的分片压缩单元的文件编号所指向的分片压缩单元确定为该第二分片压缩单元。这样,可以确定已解压的分片压缩单元,从而区分已解压的分片压缩单元和未解压的分片压缩单元。
S103,获取该第二分片压缩单元对应的第二解压数据。
本申请实施例中,若N个分片压缩单元都是未解压的分片压缩单元,即不存在已解压的分片压缩单元,那么第二分片压缩单元对应的第二解压数据中不包括任何内容;若N个分片压缩单元中有至少一个分片单元是已解压的分片压缩单元,即此次对压缩文件进行解压前,该压缩文件已部分解压,那么要获取之前解压得到的解压数据(即第二解压数据),和此次解压得到的解压数据(第一解压数据)相结合,才能在此次解压后得到已经解压的解压数据。
具体的,获取该第二分片压缩单元对应的第二解压数据,可以包括:
在对文件完成压缩后,就设置一个和该压缩文件相对应的已解压数据文件,保存在数据库中。没有开始对压缩文件解压时,该已解压数据文件的内容为空。而第一次对压缩文件进行解压后,将获得的已解压的分片压缩单元的解压数据保存在数据库的已解压数据文件中,即为第二解压数据,之后利用该压缩文件的标识信息可以获取到保存的第二解压数据。
具体的,可以先利用MD5算法(Message-Digest Algorithm MD5,一种信息摘要算法)计算该待解压的压缩文件的MD5值,然后以该MD5值作为查询条件,从数据库中查询与该待解压的压缩文件对应的解压关联文件,此解压关联文件中可以包括多个子文件,每个子文件中记录的数据不同,例如,一个子文件为该待解压的压缩文件的已解压数据文件,另一个子文件为该待解压的压缩文件的解压进度表文件。不同的子文件具有不同文件标识。将该解压关联文件包括的子文件的文件标识和预设文件标识进行比对,其中,预设文件标识可以是预设的文件名,如“已解压数据”。若该子文件的文件标识和预设文件标识一致,提取该子文件中的数据作为该第二分片压缩单元对应的第二解压数据。这样,可以获取该待解压的压缩文件在本次解压前获得的已解压数据。
S104,对该第一分片压缩单元进行解压,将解压完成的第一解压数据和该第二解压数据作为该待解压的压缩文件的解压数据。
在一个实施例中,对该第一分片压缩单元进行解压,具体包括:按照该第一分片压缩单元的文件编号的数值顺序,依次对该第一分片压缩单元进行解压。即对压缩文件中的分片压缩单元进行解压,不是随机解压的,而是按照分片压缩单元的文件编号的数值大小顺序来先后解压的,比如,按分片压缩单元的文件编号从小到大的顺序来依次解压。而分片压缩单元的文件编号的大小顺序,与该分片压缩单元解压后的解压数据在整个压缩文件的解压数据中的先后位置顺序相对应。因此,按顺序解压分片压缩单元,将得到的解压数据顺序拼接,最终能将压缩文件还原,使得解压得到的解压文件和未压缩的源文件完全相同。
在对第一分片压缩单元进行解压的过程中,如果接收到中断请求,那么中断解压过程,即此时可能对N个分片压缩单元中的一部分未解压的分片压缩单元完成解压,还有另一部分没有完成解压。完成解压的第一分片压缩单元对应的解压数据,可以作为第一解压数据。该第一解压数据可以是解压得到的每个分片压缩单元的解压数据顺序拼接后的解压数据,也可以是解压得到的每个分片压缩单元的解压数据组成的解压数据集合,集合中的数据是单独存在的,没有拼接在一起。
可选的,在对第一分片压缩单元进行解压的过程中,如果没有接收到中断请求,会对第一分片压缩单元都进行解压,即对N个分片压缩单元中未解压的分片压缩单元都进行解压,本次解压过程中解压完成的分片压缩单元对应的解压数据,可以作为第一解压数据。
本申请实施例中,将该第一解压数据和该第二解压数据作为该待解压的压缩文件的解压数据,具体可以包括:
获取了本次解压前的已解压的分片压缩单元对应的第二解压数据,以及本次解压得到的已解压的分片压缩单元对应的第一解压数据,将第二解压数据和第一解压数据组合,可以得到压缩文件的解压数据。组合是指将数据顺序拼接,具体拼接的方式可以包括但不限于以下三种不同的方式:
1)先获取第二解压数据,在本次解压过程中,对未解压的分片压缩单元进行解压,解压是顺序进行的,对一个分片压缩单元完成解压,就把此分片压缩单元对应的解压数据和第二解压数据进行拼接,继续对下一个分片压缩单元进行解压,解压完成后继续将对应的解压数据进行拼接,依次类推,直到将本次解压过程中所有解压完成的分片压缩单元对应的解压数据,都完成拼接为止。
2)先获取第二解压数据,在本次解压过程中,对未解压的分片压缩单元进行解压,解压是顺序进行的,并将这些分片压缩单元对应的解压数据先实时拼接得到第一解压数据,解压完成后,再把第一解压数据和第二解压数据进行拼接,得到该压缩文件的解压数据。
3)先获取第二解压数据,在本次解压过程中,对未解压的分片压缩单元进行解压,解压是并行进行的,同时开始解压n个分片压缩单元,n根据分片压缩单元的文件大小和***的处理能力确定,结束解压后,将本次解压过程中得到的解压完成的分片压缩单元的解压数据,与第二解压数据一起按顺序拼接,得到该压缩文件的解压数据。
根据第一解压数据和第二解压数据,获得该压缩文件的解压数据,该已解压数据可以是整个压缩文件的全部解压数据,也可以是整个文件的部分解压数据。具体的,如果在解压过程中,没有接收到中断请求,那么可以对第一分片压缩单元都进行解压并完成解压,进而得到N个分片压缩单元的解压数据,所以获得的已解压数据是整个压缩文件的全部解压数据。而如果在解压过程中,接收到中断请求,只对未解压的分片压缩单元中的部分分片压缩单元完成解压,那么获得的已解压数据是整个文件的部分解压数据,对整个压缩文件的解压过程仍未完成,需要等待下一次解压。
解压完成后,需要对本次已解压完成的分片压缩单元进行标记,即保存解压断点位置,方便下次解压找到断点位置继续进行解压。并且把获取的压缩文件对应的已解压数据更新为第二解压数据,方便下次获取当前的已解压数据。具体的,保存解压断点位置,可以通过更新解压进度来实现。
更新解压进度具体可以包括:当该待解压的压缩文件中的分片压缩单元完成解压时,从该分片压缩单元的压缩头信息中提取该分片压缩单元的文件编号,并将该文件编号添加至该解压进度表中。即把本次解压完成的分片压缩单元的文件编号按解压完成的顺序添加到解压进度表中。
可选的,将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据之后,还可以判断是否对整个待解压的压缩文件完成解压,如果完成解压,则输出通知消息,提示用户文件解压完成。具体的,判断是否对整个待解压的压缩文件完成解压,可以包括:获取所述解压进度表中包括的已解压的分片压缩单元的文件编号的个数,若所述文件编号的个数等于N,将所述待解压的压缩文件的解压数据作为所述待解压的压缩文件的最终文件解压数据。
本申请实施例,通过获取包括N个分片压缩单元的待解压的压缩文件,将该N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将该N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元;获取该第二分片压缩单元对应的第二解压数据;对该第一分片压缩单元进行解压,将解压完成的第一解压数据和该第二解压数据作为该待解压的压缩文件的解压数据,能够减少异常中断后重新从头开始解压的时间损耗,提高解压效率。
下面结合一个具体场景,介绍使用本申请实施例的文件解压方法的具体流程。在此场景中,需要对待解压的压缩文件进行解压,获得解压数据。
如图2所示,图2为本申请实施例的另一种文件解压方法的流程图,本申请实施例的文件解压方法可以包括以下步骤S201-步骤S211。
S201,获取待解压的压缩文件。
在本申请实施例中,开始解压缩时,先获取待解压的压缩文件。
S202,判断该压缩文件是否为预设文件格式的压缩文件。
在本申请实施例中,所提出的文件解压方法针对于预设文件格式的压缩文件,预设文件格式的具体描述请参见上述实施例步骤S101,此处不再赘述。
因此,针对待解压的压缩文件,判断该压缩文件的文件格式是否为预设文件格式,可以通过文件名后缀或压缩头信息来判断,具体的,如果文件名后缀和预设文件格式对应的文件名后缀相同,那么可以确定该压缩文件是预设文件格式的压缩文件,例如,预设文件格式的文件名后缀是“.amcr”,而该压缩文件的文件名后缀也是“.amcr”,则可以确定该压缩文件符合条件。可选的,还可以结合压缩文件的压缩头信息来判断。压缩头信息中可以包括文件的压缩方式等信息,预设文件格式对应特定的压缩方式,若该压缩文件的压缩方式是该特定的压缩方式,那么可以确定该压缩文件是预设文件格式的压缩文件。
若该压缩文件是预设文件格式的压缩文件,则可以进行解压,进行下一步骤;若该压缩文件不是预设文件格式的压缩文件,则无法进行解压,此时可以输出“文件格式不符合要求,无法解压”的提示信息,结束解压过程。
S203,获取该压缩文件的文件解压状态、解压进度和已解压数据。
在本申请实施例中,获取该压缩文件后,可以计算该压缩文件的MD5值,并根据该MD5值,去数据库中查询并获取该压缩文件的文件解压状态、解压进度和已解压数据。具体的,可以以该MD5值为查询条件,从数据库中查询该压缩文件对应的解压关联文件,该解压关联文件中可以包括该压缩文件的文件解压状态信息、解压进度表和已解压数据文件。从该解压关联文件中分别提取文件解压状态信息、解压进度表和已解压数据文件,即获取了该压缩文件的文件解压状态、解压进度和已解压数据。
该文件解压状态用于说明该压缩文件当前是否已完成解压,该解压进度保存了该压缩文件中已完成解压的分片压缩单元的记录,该已解压数据保存了该压缩文件中已完成解压的分片压缩单元对应的解压数据。
S204,判断该压缩文件的文件解压状态是否为未完成。
在一种可能的实施方式中,该文件解压状态可以包括完成和未完成2种状态,若文件解压状态为完成,则文件已解压完成,在之前已解压过,无需再次解压;若文件解压状态为未完成,则文件未开始解压,或者之前已开始解压但发生中断未全部解压完成,需要继续进行解压。
因此,若判断结果为否,则结束解压过程。
若判断结果为是,则继续下一步骤。
S205,判断该压缩文件是否为上次已开始解压但未完成的压缩文件。
在一种可能的实施方式中,可以根据该压缩文件的解压进度来判断该压缩文件是否上次已开始解压但未完成。具体的,解压进度中记录了当前时刻已解压的分片压缩单元的标识,该标识可以是文件编号,该文件编号和该分片压缩单元对应的未压缩的分片文件在整个文件中的位置顺序相关。可选的,该标识还可以是序列号,本申请对此不作限制。
若解压进度中不包括任意一个已解压的分片压缩单元的文件编号,则说明该压缩文件未开始解压;若解压进度中包括至少一个已解压的分片压缩单元的文件编号,则说明该压缩文件上次已开始解压但未完成。
因此,若判断结果为是,则执行步骤S207。
若判断结果为否,则执行步骤S206。
S206,获取压缩文件中的第一个分片压缩单元。
若文件之前未开始解压,在一种可能的实施方式中,该分片压缩单元解压进度中没有已解压的分片压缩单元的文件编号,那么可以根据压缩文件中包括的所有的分片压缩单元的文件编号,找到第一个分片压缩单元,从头开始对压缩文件进行解压,即继续执行步骤S208。示例性的,可以找到文件编号最小的分片压缩单元,将其确定为第一个分片压缩单元。
S207,获取上次未解压的分片压缩单元。
若之前已开始解压但发生中断未全部解压完成,在一种可能的实施方式中,将该压缩文件包括的所有分片压缩单元的文件编号,除解压进度中记录的已解压的分片压缩单元的文件编号之外的文件编号所指向的分片压缩单元,确定为未解压的分片压缩单元,并从未解压的分片压缩单元中找到第一个未解压的分片压缩单元,从该分片压缩单元开始,顺序获取未解压的分片压缩单元以对其进行解压。示例性的,可以将未解压的分片压缩单元的文件编号中最小的文件编号所指向的分片压缩单元,确定为第一个未解压的分片压缩单元。然后,继续执行步骤S208。
S208,按顺序解压分片压缩单元,解压完成后更新已解压数据和解压进度。
在一种可能的实施方式中,按照分片压缩单元的文件编号的数值顺序,依次进行解压。示例性的,可以按照文件编号从小到大的顺序对分片压缩单元进行解压。而每个分片压缩单元的压缩头信息中可以包含下一个待解压的分片压缩单元的文件编号,因此可以顺序获取未解压的分片压缩单元,具体的,获取一个分片压缩单元,对此分片压缩单元进行解压处理后,再按顺序获取下一个分片压缩单元,继续进行解压处理。
而对该分片压缩单元进行解压,解压完成后,可以更新已解压数据和解压进度。具体的,已解压数据可以存储在数据库中。在从断点位置开始继续解压的情况下,可以先从数据库中获取之前已完成解压的分片压缩单元对应的部分已解压数据,而在本次解压过程,每次对一个分片压缩单元解压后,将该分片压缩单元对应的单元解压数据和获取的之前已完成的部分已解压数据进行拼接,得到实时的已解压数据,并将数据库中之前保存的已解压数据更新为此实时的已解压数据,这样,实现了对已解压数据的更新。而更新解压进度具体可以包括:将刚完成解压的分片压缩单元的文件编号添加至解压进度表中。
S209,判断是否接收到中断请求。
在解压过程中,可能会遇到异常情况,需要中断当前的解压过程。因此,***可以实时监控解压过程,在发生异常情况时发出中断请求,用于请求中断解压过程。异常情况可以包括:电脑关机,压缩包损耗等。
因此,若接收到中断请求,则执行步骤S210。
若没有接收到中断请求,则执行步骤S211。
S210,确定解压进度未达到完成进度,中断解压过程。
在本申请实施例中,在接收到中断请求的情况下,判断解压进度是否达到完成进度,若未达到完成进度,中断解压过程。此时解压进度中保存了当前的解压进度,并且已解压数据为当前全部已解压的分片压缩单元对应的解压数据,中断了解压过程,后续仍然可以根据保存的解压进度和已解压数据进行断点解压,而无需再重新从头开始解压。
在一种可能的实施方式中,判断分片压缩单元解压进度是否达到完成进度,可以包括:获取解压进度中已解压的分片压缩单元的文件编号的个数a,若此数a小于该压缩文件包括的分片压缩单元的总数b,则说明未达到完成进度。
S211,确定解压进度达到完成进度,将文件解压状态更新为已完成,得到文件解压数据。
在本申请实施例中,若确定解压进度达到完成进度,那么可以将文件解压状态更新为已完成,并且将得到的已解压数据,确定为最终的文件解压数据,完成解压。因为得到的已解压数据是实时更新的,那么在完成对最后一个分片压缩单元的解压过程后,更新得到的已解压数据包括了所有分片压缩单元的单元解压数据,即是完整的文件解压数据,因此可以把得到的已解压数据确定为最终文件解压数据。可选的,可以在解压完成后输出“解压已完成”的提示信息。
在一种可能的实施方式中,判断分片压缩单元解压进度是否达到完成进度,可以包括:获取解压进度中已解压的分片压缩单元的文件编号的个数a,若此数a等于该压缩文件包括的分片压缩单元的总数b,则说明达到完成进度。
本申请实施例,通过获取待解压的压缩文件,找到未解压的分片压缩单元并对其进行解压,获得对应的解压数据;并且获取之前已解压的分片压缩单元对应的已解压数据,将之前的已解压数据和当前的解压数据结合得到压缩文件的已解压数据,并且在文件解压过程中实时保存解压进度,在异常情况下中断解压过程,之后可以识别解压中断时的断点位置,针对未解压的部分进行解压,而不再重复对已解压的部分进行解压,从而提高了解压效率,减少了异常中断后重新从头开始解压的时间损耗。
请参见图3,为本申请实施例提供了一种文件解压装置的结构示意图。如图3所示,本申请实施例的所述文件解压装置可以包括:
第一获取单元10,用于获取待解压的压缩文件,所述待解压的压缩文件包括N个分片压缩单元,所述N为正整数;
第一确定单元11,用于将所述N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将所述N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,其中,所述第二分片压缩单元在解压中断时已完成解压;
第二获取单元12,用于获取所述第二分片压缩单元对应的第二解压数据;
解压单元13,用于对所述第一分片压缩单元进行解压,将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。
在一种可能的设计中,所述第一确定单元11具体用于:
从数据库中获取所述待解压的压缩文件对应的解压进度表,所述解压进度表中包括所述待解压的压缩文件包括的N个分片压缩单元的文件编号,以及所述待解压的压缩文件中已解压的分片压缩单元的文件编号;
将所述N个分片压缩单元的文件编号中除所述已解压的分片压缩单元的文件编号之外的分片压缩单元的文件编号所指向的分片压缩单元确定为所述第一分片压缩单元,以及将所述解压进度表中记载的已解压的分片压缩单元的文件编号所指向的分片压缩单元确定为所述第二分片压缩单元。
在一种可能的设计中,所述装置还包括:
更新单元,用于当所述待解压的压缩文件中的分片压缩单元完成解压时,从所述分片压缩单元的压缩头信息中提取所述分片压缩单元的文件编号,并将所述文件编号添加至所述解压进度表中。
在一种可能的设计中,所述解压单元13具体用于:
按照所述第一分片压缩单元的文件编号的数值顺序,依次对所述第一分片压缩单元进行解压;
在发生中断的情况下,将解压完成的第一分片压缩单元对应的解压数据确定为所述第一解压数据;
将所述第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。
在一种可能的设计中,所述第二获取单元12具体用于:
计算所述待解压的压缩文件的MD5值;
以所述MD5值作为查询条件,从数据库中查询与所述待解压的压缩文件对应的解压关联文件;
将所述解压关联文件包括的子文件的文件标识和预设文件标识进行比对;
若所述子文件的文件标识和预设文件标识一致,提取所述子文件中的数据作为所述第二分片压缩单元对应的第二解压数据。
在一种可能的设计中,所述第一获取单元10具体用于:
获取待比对的压缩文件,将所述待比对的压缩文件的文件格式和预设文件格式进行比对;
若所述文件格式和预设文件格式一致,将所述待比对的压缩文件确定为待解压的压缩文件。
在一种可能的设计中,所述装置还包括:
第三获取单元,用于获取所述解压进度表中包括的已解压的分片压缩单元的文件编号的个数;
第二确定单元,用于若所述文件编号的个数等于N,将所述待解压的压缩文件的解压数据作为所述待解压的压缩文件的最终文件解压数据;
输出单元,用于输出通知消息,所述通知消息用于通知对所述待解压的压缩文件解压完成。
其中,图3所示装置实施例的具体描述可以参照前述图1或图2所示方法实施例的具体说明,在此不进行赘述。
请参照图4,为本申请实施例提供的另一种文件解压装置的结构示意图,如图4所示,所述文件解压装置1000可以包括:至少一个处理器1001,例如CPU,至少一个通信接口1003,存储器1004,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。通信接口1003可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1004可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图4所示,作为一种计算机存储介质的存储器1004中可以包括操作***、网络通信模块以及程序指令。
在图4所示的文件解压装置1000中,处理器1001可以用于加载存储器1004中存储的程序指令,并具体执行以下操作:
获取待解压的压缩文件,所述待解压的压缩文件包括N个分片压缩单元,所述N为正整数;
将所述N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将所述N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,其中,所述第二分片压缩单元在解压中断时已完成解压;
获取所述第二分片压缩单元对应的第二解压数据;
对所述第一分片压缩单元进行解压,将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。
需要说明的是,具体执行过程可以参见图1或图2所示方法实施例的具体说明,在此不进行赘述。
具体执行步骤可以参见前述实施例的描述,此处不在赘述。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1或图2所示实施例的方法步骤,具体执行过程可以参见图1或图2所示实施例的具体说明,在此不进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。

Claims (9)

1.一种文件解压方法,其特征在于,所述方法包括:
获取待解压的压缩文件,所述待解压的压缩文件包括N个分片压缩单元,所述N为正整数;
将所述N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将所述N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,其中,所述第二分片压缩单元在解压中断时已完成解压;
获取所述第二分片压缩单元对应的第二解压数据;
对所述第一分片压缩单元进行解压,将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据;
其中,所述将所述N个分片压缩单元中未解压的分片压缩单元确定为第一分片压缩单元,并将所述N个分片压缩单元中已解压的分片压缩单元确定为第二分片压缩单元,包括:
从数据库中获取所述待解压的压缩文件对应的解压进度表,所述解压进度表中包括所述待解压的压缩文件包括的N个分片压缩单元的文件编号,以及所述待解压的压缩文件中已解压的分片压缩单元的文件编号;
将所述N个分片压缩单元的文件编号中除所述已解压的分片压缩单元的文件编号之外的分片压缩单元的文件编号所指向的分片压缩单元确定为所述第一分片压缩单元,以及将所述解压进度表中记载的已解压的分片压缩单元的文件编号所指向的分片压缩单元确定为所述第二分片压缩单元。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述待解压的压缩文件中的分片压缩单元完成解压时,从所述分片压缩单元的压缩头信息中提取所述分片压缩单元的文件编号,并将所述文件编号添加至所述解压进度表中。
3.如权利要求1所述的方法,其特征在于,所述对所述第一分片压缩单元进行解压,并将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据,包括:
按照所述第一分片压缩单元的文件编号的数值顺序,依次对所述第一分片压缩单元进行解压;
在发生中断的情况下,将解压完成的第一分片压缩单元对应的解压数据确定为所述第一解压数据;
将所述第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。
4.如权利要求1所述的方法,其特征在于,所述获取所述第二分片压缩单元对应的第二解压数据,包括:
计算所述待解压的压缩文件的MD5值;
以所述MD5值作为查询条件,从数据库中查询与所述待解压的压缩文件对应的解压关联文件;
将所述解压关联文件包括的子文件的文件标识和预设文件标识进行比对;
若所述子文件的文件标识和预设文件标识一致,提取所述子文件中的数据作为所述第二分片压缩单元对应的第二解压数据。
5.如权利要求1所述的方法,其特征在于,所述获取待解压的压缩文件,包括:
获取待比对的压缩文件,将所述待比对的压缩文件的文件格式和预设文件格式进行比对;
若所述文件格式和预设文件格式一致,将所述待比对的压缩文件确定为待解压的压缩文件。
6.如权利要求1所述的方法,其特征在于,所述将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据之后,所述方法还包括:
获取所述解压进度表中包括的已解压的分片压缩单元的文件编号的个数,若所述文件编号的个数等于N,将所述待解压的压缩文件的解压数据作为所述待解压的压缩文件的最终文件解压数据;
输出通知消息,所述通知消息用于通知对所述待解压的压缩文件解压完成。
7.一种文件解压装置,其特征在于,包括:
第一获取单元,用于获取待解压的压缩文件,所述待解压的压缩文件包括N个分片压缩单元,所述N为正整数;
第一确定单元,用于从数据库中获取所述待解压的压缩文件对应的解压进度表,所述解压进度表中包括所述待解压的压缩文件包括的N个分片压缩单元的文件编号,以及所述待解压的压缩文件中已解压的分片压缩单元的文件编号;
将所述N个分片压缩单元的文件编号中除所述已解压的分片压缩单元的文件编号之外的分片压缩单元的文件编号所指向的分片压缩单元确定为第一分片压缩单元,以及将所述解压进度表中记载的已解压的分片压缩单元的文件编号所指向的分片压缩单元确定为第二分片压缩单元;
第二获取单元,用于获取所述第二分片压缩单元对应的第二解压数据;
解压单元,用于对所述第一分片压缩单元进行解压,将解压完成的第一解压数据和所述第二解压数据作为所述待解压的压缩文件的解压数据。
8.一种文件解压装置,其特征在于,包括处理器、存储器以及通信接口,所述处理器、存储器和通信接口相互连接,其中,所述通信接口用于接收和发送数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,执行如权利要求1至6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至6任一项所述的方法。
CN202110430107.XA 2021-04-21 2021-04-21 一种文件解压方法及装置 Active CN113111040B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110430107.XA CN113111040B (zh) 2021-04-21 2021-04-21 一种文件解压方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110430107.XA CN113111040B (zh) 2021-04-21 2021-04-21 一种文件解压方法及装置

Publications (2)

Publication Number Publication Date
CN113111040A CN113111040A (zh) 2021-07-13
CN113111040B true CN113111040B (zh) 2024-04-30

Family

ID=76719039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110430107.XA Active CN113111040B (zh) 2021-04-21 2021-04-21 一种文件解压方法及装置

Country Status (1)

Country Link
CN (1) CN113111040B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115865905B (zh) * 2023-02-21 2023-06-13 深圳依时货拉拉科技有限公司 压缩包下载的方法、装置、计算机设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0696107A2 (en) * 1994-08-01 1996-02-07 Thomson Consumer Electronics, Inc. Method for compressing and decompressing data files
CN111061693A (zh) * 2019-12-19 2020-04-24 深圳市迅雷网络技术有限公司 一种下载时解压分卷压缩文件的方法、装置及介质
CN112214462A (zh) * 2020-10-22 2021-01-12 新华三信息安全技术有限公司 压缩文件的多层解压缩方法、电子设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0696107A2 (en) * 1994-08-01 1996-02-07 Thomson Consumer Electronics, Inc. Method for compressing and decompressing data files
CN111061693A (zh) * 2019-12-19 2020-04-24 深圳市迅雷网络技术有限公司 一种下载时解压分卷压缩文件的方法、装置及介质
CN112214462A (zh) * 2020-10-22 2021-01-12 新华三信息安全技术有限公司 压缩文件的多层解压缩方法、电子设备及存储介质

Also Published As

Publication number Publication date
CN113111040A (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
US8698657B2 (en) Methods and systems for compressing and decompressing data
EP1592184A2 (en) Method and system for transmitting data for data synchronization between server and client when data synchronization session was abnormally terminated
CN108363579B (zh) 数据烧录方法、装置、设备及存储介质
US8572054B2 (en) Forward compatibility guaranteed data compression and decompression method and apparatus thereof
CN113111040B (zh) 一种文件解压方法及装置
CN111857790A (zh) 一种固件升级方法、装置及计算机设备
CN112597337A (zh) 一种视频监控内容的查看方法、装置、设备及介质
CN108446300B (zh) 数据信息的扫描方法及装置
EP3506599B1 (en) Method for synchronizing contact information, apparatus and medium
CN111433739A (zh) 程序的升级方法和嵌入式设备
CN112311902A (zh) 基于微服务的文件发送方法及装置
CN116016549A (zh) 数据文件动态分片上传的方法及其***
CN109788251B (zh) 视频处理方法、装置及存储介质
CN113572834B (zh) 巡检数据上传方法、装置、***及存储介质
CN112395360B (zh) 基于非关系型数据库的数据同步方法、设备、装置和介质
CN115421745A (zh) 设备远程升级方法、装置、终端及存储介质
CN115766696A (zh) 一种文件上传方法、装置、电子设备及存储介质
CN111291207B (zh) 图片存储方法、装置及服务器
CN114968963A (zh) 文件覆盖写方法、装置和电子设备
CN113609526A (zh) 一种操作***的升级方法、装置及设备
CN112000342A (zh) 一种操作***安装方法、装置、设备及存储介质
CN112422693A (zh) 一种用户在线短视频草稿队列的导出方法
CN112312213A (zh) 数字电视***的升级方法及相关装置
CN116107603B (zh) 一种固件升级方法、装置、存储介质和电子设备
CN112433743B (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240328

Address after: No. 4, West Erheng, Da'ao Hutou Temple, Huanggang Town, Raoping County, Chaozhou City, Guangdong Province, 521000

Applicant after: Zheng Xuchun

Country or region after: China

Address before: 518000 Room 201, building A, 1 front Bay Road, Shenzhen Qianhai cooperation zone, Shenzhen, Guangdong

Applicant before: PING AN PUHUI ENTERPRISE MANAGEMENT Co.,Ltd.

Country or region before: China

GR01 Patent grant
GR01 Patent grant