RAR文件的解压缩方法和装置制造方法及图纸

技术编号:9007817 阅读:135 留言:0更新日期:2013-08-08 02:48
本发明专利技术提供了RAR文件的解压缩方法和装置,该RAR文件为非固实压缩文件,包括固定数据块、非固定数据块和非RAR数据块。其中方法为:修正固定数据块;在RAR文件中获取第i个数据块;在第i个数据块为非RAR数据块的情况下,将非RAR数据块修改为非固定数据块;判断第i个数据块是否为CRC正确的数据块;若否,则获取第i个数据块之后最接近的CRC正确的数据块;根据第i个数据块与最接近的CRC正确的数据块之间的间隔修改第i个数据块的块大小,直至获取到RAR文件中最后一个数据块;对修改后的RAR文件进行解压缩;i为正整数且i≥1。本发明专利技术的RAR文件的解压缩方法和装置,通过对RAR文件进行修改,再对修改后的RAR文件进行解压缩,以提高RAR文件解压缩的成功率和完整性。

【技术实现步骤摘要】

本专利技术涉及数据解压缩领域,特别地,涉及一种RAR文件的解压缩方法和装置
技术介绍
近年来,随着计算机技术的发展,数据处理量越来越大,为了更有效地存储、处理和传输大量数据,压缩技术应运而生。其中,RAR格式的压缩文件(简称RAR文件)具有较高的压缩率,并且在数据的存储、管理、通信及保密方面都具有优势。但是,在实际应用中,由于工作环境的复杂多变,RAR文件中的数据中往往存在误码,一旦数据中存在误码,将会严重降低RAR文件解压缩的成功率。因此,如何快速准确的对存在误码的RAR文件进行解压缩,对实际应用具有重要的意义。目前,对于存在误码的RAR文件进行解压缩的方法主要有两种。一种是忽略RAR文件中的CRC (循环冗余校验)部分,直接对RAR文件进行解压缩;另一种是先遍历RAR文件,再提取出CRC正确的文件头块,然后再对RAR文件进行解压缩。但是,对于第一种解压缩方法来说,如果在RAR文件中比较靠前的数据块信息出错,将会直接导致后面完整且正确的数据块不能被正常解压。例如,对于非固实压缩的RAR文件来说,一个文件头块的长度信息出错,直接导致无法正确识别后面的文件头块,造成RAR文件不能被正确解压。对于第二种解压缩方法来说,如果文件头块中的CRC不正确,则完全不能解压出文件头块中的数据。但是,也有当文件头某些字段信息出错也可以进行解压的情况,比如文件冗余较少的情况,如较小的文件和PNG这些压缩后的文件,但其解压出的文件通常是不完整的。·
技术实现思路
本专利技术所要解决的技术问题是提供一种RAR文件的解压缩方法和装置,能够提高RAR解压缩的成功率和完整性。本专利技术提出一种RAR文件的解压缩方法,所述RAR文件为非固实压缩文件,包括固定数据块、非固定数据块和非RAR数据块,所述方法包括如下步骤: 修正所述固定数据块; 在所述RAR文件中获取第i个数据块; 在所述第i个数据块为非RAR数据块的情况下,将所述第i个数据块修改为非固定数据块; 判断所述第i个数据块是否为CRC正确的数据块; 如果判断结果为否,则获取所述第i个数据块之后最接近的CRC正确的数据块; 根据所述第i个数据块与所述第i个数据块之后最接近的CRC正确的数据块之间的间隔修改所述第i个数据块的块大小,直至获取到所述RAR文件中最后一个数据块; 对修正后的RAR文件进行解压缩;其中,i为正整数且i彡I。其中,所述固定数据块包括标记块,压缩文件头块和结尾块。进一步的,修正所述固定数据块的步骤具体为: 将所述标记块的值修正为0x52 61 72 21 IA 07 00 ; 将所述压缩文件头的头类型修正为0x73,文件大小修正为OxOD 00 ; 将所述结束块的值修正为0xC4 3D 7B 00 40 07 00。进一步的,将所述第i个数据块修改为非固定数据块的方式为:将所述第i个数据块的头类型修改为文件头类型。进一步的,所述解压缩为不包括CRC校验过程的解压缩。本专利技术还提 出一种与上述RAR文件的解压缩方法相对应的解压缩装置,所述RAR文件为非固实压缩文件,包括固定数据块、非固定数据块和非RAR数据块,其特征在于,所述装置包括: 修正单元,用于修正所述固定数据块; 第一获取单元,用于在所述RAR文件中获取第i个数据块; 第一修改单元,用于在所述第i个数据块为非RAR数据块的情况下,将第i个数据块修改为非固定数据块; 判断单元,用于判断所述第i个数据块是否为CRC正确的数据块; 第二获取单元,用于当所述判断单元的判断结果为否时,获取所述第i个数据块之后最接近的CRC正确的数据块; 第二修改单元,用于根据所述第i个数据块与所述第i个数据块之后最接近的CRC正确的数据块之间的间隔修改所述第i个数据块的块大小,直至获取到所述RAR文件中最后一个数据块; 解压缩单元,用于对修改后的RAR文件进行解压缩; 其中,i为正整数且i彡I。其中,所述固定数据块包括标记块,压缩文件头块和结尾块。进一步的,修正所述固定数据块的方式为: 将所述标记块的值修正为0x52 61 72 21 IA 07 00 ; 将所述压缩文件头的头类型修正为0x73,文件大小修正为OxOD 00 ; 将所述结束块的值修正为0xC4 3D 7B 00 40 07 00。进一步的,将所述第i个数据块修改为非固定数据块的方式为:将所述第i个数据块的头类型修改为文件头类型。进一步的,所述解压缩为不包括CRC校验过程的解压缩。本专利技术RAR文件的解压缩方法和装置的优选实施例通过对RAR文件中的固定数据块、非固定数据块和非RAR数据块进行修改,再对修改后的RAR文件进行解压缩,可提高RAR文件解压缩的成功率和完整性。附图说明 图1是本专利技术RAR文件的解压缩方法一实施例的流程 图2是本专利技术RAR文件的解压缩装置一实施例的结构示意图。具体实施例方式在对本专利技术的技术方案做进一步详细说明之前,首先简单介绍一下RAR压缩文件。压缩文件由可变长度的块组成,这些块的顺序可以变化,但是第一块必须但是一个在压缩文件头后的标记块。现在公开的块类型包括:标记块,压缩文件头块,文件头块,注释头,用户身份信息,子块和恢复记录块等。每个块均包括下列结构: HEAD_CRC 2字节所有块或块部分的CRC ; HEAD_TYPE I字节块类型; HEAD_FLAGS 2字节块标记; HEAD_SIZE 2字节块大小; 如果块标记的第一位被置I的话,还存在: ADD_SIZE 4字节可选结构-增加块大小。为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。本专利技术提出一种RAR文件 的解压缩方法,所述RAR文件为非固实压缩文件,包括固定数据块、非固定数据块和非RAR数据块。参照图1,示出了本专利技术RAR文件的解压缩方法一实施例的流程图,该方法包括如下步骤: S11,当固定数据块不正确时,修正固定数据块。其中,固定数据块包括标记块,压缩文件头块和结尾块。S12,在RAR文件中获取第i个数据块,其中,i为正整数且i彡I。S13,在第i个数据块为非RAR数据块的情况下,将第i个数据块修改为非固定数据块,使RAR文件中不存在非RAR数据块,即只包含固定数据块和非固定数据块,由于固定数据块在Sll中已经进行了修正,因此,下面的步骤都是针对非固定数据块来进行的。S14,在非固定数据块中,判断第i个数据块是否为CRC正确的数据块。如果判断结果为是,即第i个数据块为CRC正确的数据块,则跳过,不进行任何操作;如果判断结果为否,即第i个数据块为CRC不正确的数据块,则转S15。S15,获取第i个数据块之后最接近的CRC正确的数据块。其中,CRC指的是HEAD_CRC,即所有块或块部分的CRC。S16,根据第i个数据块与第i个数据块之后最接近的CRC正确的数据块之间的间隔修改第i个数据块的块大小。重复执行上述对非RAR数据块和非固定数据块的操作步骤,直至获取到RAR文件中最后一个数据块,将非固定数据块中的CRC不正确的数据块大小都进行修改。S17,对修改后的RAR文件进行解压缩,其中,该解压缩为不包括CRC校验过程的解压缩。上述RAR文件的解压缩方法本文档来自技高网...

【技术保护点】
一种RAR文件的解压缩方法,所述RAR文件为非固实压缩文件,包括固定数据块、非固定数据块和非RAR数据块,其特征在于,所述方法包括如下步骤:修正所述固定数据块;在所述RAR文件中获取第i个数据块;在所述第i个数据块为非RAR数据块的情况下,将所述第i个数据块修改为非固定数据块;判断所述第i个数据块是否为CRC正确的数据块;如果判断结果为否,则获取所述第i个数据块之后最接近的CRC正确的数据块;根据所述第i个数据块与所述第i个数据块之后最接近的CRC正确的数据块之间的间隔修改所述第i个数据块的块大小,直至获取到所述RAR文件中最后一个数据块;对修改后的RAR文件进行解压缩;其中,i为正整数且i≥1。

【技术特征摘要】

【专利技术属性】
技术研发人员:王大彬李民权
申请(专利权)人:厦门市美亚柏科信息股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1