海量小文件快速更新的方法及其系统与流程

文档序号:12463254阅读:461来源:国知局
海量小文件快速更新的方法及其系统与流程

本发明涉及数据更新领域,具体说的是海量小文件快速更新的方法及其系统。



背景技术:

同样大小的压缩包,下载的时间是一样的,但是解压的时间是不一样的,一般情况下,文件数多的解压速度慢,文件少解压速度快。

在包含有海量小文件的软件或应用程序进行更新的时候,并非所有的海量小文件都需要进行更新。但在现有技术中,如对包含有海量小文件的软件进行更新的时候,大多采用直接下载获取整个软件更新安装包,然后对其解压缩获取所有的文件,这样就导致需要对海量小文件都进行解压缩,导致解压缩速度慢,文件更新效率慢,用户体验差;还有一种更新方式是遍历整个软件更新安装包内的所有文件,通过与本地原文件进行对比判断确定需要进行更新,因为是海量文件,文件读写非常频繁的话,速度就会变慢,所有的文件遍历一遍代价高又耗时,同样存在文件更新效率差,用户体验差的问题。



技术实现要素:

本发明所要解决的技术问题是:提供海量小文件快速更新的方法及其系统,实现提高文件解压更新速度,提升用户体验。

为了解决上述技术问题,本发明采用的技术方案为:

海量小文件快速更新的方法,包括:

获取待解压文件及其文件校验表;

遍历所述文件校验表中的文件目录树,获取一文件;

判断本地是否存储有相应的文件;

若无,则从所述待解压文件中解压所述文件,并将所述文件对应的校验值存储在本地;

若有,则判断所述文件在所述文件校验表中的校验值与存储在本地的校验值是否一致;若不一致,则从所述待解压文件中解压所述文件。

本发明提供的另一个技术方案为:

海量小文件快速更新的系统,包括:

第一获取模块,用于获取待解压文件及其文件校验表;

第二获取模块,用于遍历所述文件校验表中的文件目录树,获取一文件;判断本地是否存储有相应的文件;

第一判断模块,用于判断本地是否存储有相应的文件;

第一解压模块,用于若第一判断模块的判断结果为无,则从所述待解压文件中解压所述文件,并将所述文件对应的校验值存储在本地;

第二判断模块,用于若第一判断模块的判断结果为有,则判断所述文件在所述文件校验表中的校验值与存储在本地的校验值是否一致;

第二解压模块,用于若第二判断模块的判断结果为不一致,则从所述待解压文件中解压所述文件。

本发明的有益效果在于:区别于现有技术的软件更新方式需要解压整个软件更新包,耗时又低效率的不足。本申请提供海量小文件快速更新的方法及其系统,依据待解压文件的文件校验表判断本地对应的文件的校验值是否改变,若改变,则从待解压文件中解压得到对应的文件,实现对该文件的更新,本方法也是一种增量解压的实现方法;若本地不存在对应的文件,则解压得到该文件,并将该文件对应的校验值进行存储,实现对原软件安装文件夹的文件更新,或者是软件安装文件的首次安装。本发明优化了对软件安装文件夹的更新方式,针对软件安装文件夹中的海量小文件,依据文件校验表高效的验证机制,准确定位需要更新的文件,针对性的进行文件更新,以增量解压方式大大缩短解压工作量,缩短更新时间,确保海量文件的快速、高效更新。

附图说明

图1为本发明的海量小文件快速更新的方法的流程示意图;

图2为本发明实施例一第一种情况的方法流程示意图;

图3为本发明实施例一第二种情况的方法流程示意图;

图4为本发明的海量小文件快速更新的系统的功能模块结构组成示意图;

图5为本发明实施例二的功能模块结构组成示意图。

标号说明:

1、第一获取模块;2、第二获取模块;3、第一判断模块;

4、第一解压模块;5、第二判断模块;6、第二解压模块;7、循环模块;

8、第三获取模块;9、第三解压模块。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:依据文件校验表,准确定位需要更新的文件,针对性的进行文件更新,此种增量解压方式大大缩短解压工作量,缩短更新时间,确保海量文件的快速、高效更新。

请参照图1,本发明提供一种海量小文件快速更新的方法,包括:

获取待解压文件及其文件校验表;

遍历所述文件校验表中的文件目录树,获取一文件;

判断本地是否存储有相应的文件;

若无,则从所述待解压文件中解压所述文件,并将所述文件对应的校验值存储在本地;

若有,则判断所述文件在所述文件校验表中的校验值与存储在本地的校验值是否一致;若不一致,则从所述待解压文件中解压所述文件。

从上述描述可知,本发明的有益效果在于:通过增量解压更新的方式,能够实现快速的将成千上万的海量文件快速升级到最新版本。

进一步包括:

若一致,则返回执行所述遍历所述文件校验表中的文件目录树步骤,获取所述下一文件。

有上述描述可知,若文件的校验值发生改变,则证明该文件内的数据发生改变,需要对该文件进行更新。

进一步的,所述获取待解压文件及其文件校验表,之前,进一步包括:

获取软件安装包;

解压缩所述软件安装包,在本地生成对应的软件安装文件夹。

由上述描述可知,能够实现对已存储在本地的软件安装包中待更新文件的更新。

进一步的,所述判断本地是否存储有相应的文件,具体为:

在所述软件安装文件夹中判断是否存储有相应的文件。

由上述描述可知,直接在待更新的软件安装包中确定是否存储有对应的文件,通过缩小检索范围,实现更快更准确的定位待更新的文件。

请参阅图4,本发明提供的另一个技术方案为:

海量小文件快速更新的系统,包括:

第一获取模块,用于获取待解压文件及其文件校验表;

第二获取模块,用于遍历所述文件校验表中的文件目录树,获取一文件;判断本地是否存储有相应的文件;

第一判断模块,用于判断本地是否存储有相应的文件;

第一解压模块,用于若第一判断模块的判断结果为无,则从所述待解压文件中解压所述文件,并将所述文件对应的校验值存储在本地;

第二判断模块,用于若第一判断模块的判断结果为有,则判断所述文件在所述文件校验表中的校验值与存储在本地的校验值是否一致;

第二解压模块,用于若第二判断模块的判断结果为不一致,则从所述待解压文件中解压所述文件。

进一步的,还包括:

循环模块,用于若所述第二判断模块的判断结果为一致,则返回执行第一判断模块,获取下一文件。

进一步的,还包括:

第三获取模块,用于获取软件安装包;

第三解压模块,用于解压缩所述软件安装包,在本地生成对应的软件安装文件夹。

进一步的,所述第一判断模块,具体用于在所述软件安装文件夹中判断是否存储有相应的文件。

实施例一

请参照图2和图3,本实施例提供一种海量小文件快速更新的方法,适用于对已存储在本地的软件安装包中需要进行更新的文件进行更新,以及软件安装包的首次安装。

具体的,可以包括以下步骤:

S1:获取待解压文件及其文件校验表;优选的,通过ZIP解压器打开待解压文件,获取其中的文件校验表。

所述待解压文件时对包含有成千上万的海量小文件的文件夹进行压缩所得;所述文件检验表中包含按照行业既定格式存储的树形结构的文件目录表和对应的CRC32校验值,所述CRC32校验值为32位循环冗余校验码;现有技术中,所述文件检验表用于验证对应文件数据的一致性和完整性。

S2:遍历所述文件校验表中的文件目录树,获取一文件;

S3:判断本地是否存储有相应的文件;即逐一判断文件目录树中的各文件是否在本地中已经存储有与其对应的文件;若无,则执行S4;若有,则执行S5;

S4:从所述待解压文件中解压所述文件,并将所述文件对应的校验值存储在本地。

本地中并不存在该文件,则证明该文件为新增文件,属于此次更新范围,从解压文件中解压出该文件;同时,将该文件对应的校验值存储在本地,并与该文件进行关联。对应存储文件的校验值的目的在于能够用于下次解压更新时判断该文件是否需要更新。

S5:进一步判断所述文件在所述文件校验表中的校验值与存储在本地的校验值是否一致,若一致,则返回S2,获取下一文件,然后以所述下一文件为此后步骤中的所述文件,继续执行从判断本地是否存储有相应的文件之后的步骤;若不一致,则执行S6;即判断该文件原先对应的校验值是否发生改变,若改变,则证明该文件内的数据发生了改变,需要进行更新;

若文件在待解压文件中存储的文件校验表中对应的校验值与该文件存储在本地中的校验表中对应的校验值一致,则证明针对此次更新情况,该文件中的数据并没有发生变化,不需要对该文件进行更新,因此无需从待解压文件中将该文件解压出来。

S6:从所述待解压文件中解压所述文件。相反的,文件的校验值发生了改变,则证明该文件的数据发生了改变,属于更新范围,需要从待解压文件中解压出该文件,对存储在本地的对应文件进行更新。

本实施例同时包含了两种情况

如图2所示,第一种情况:对本地已安装存储有与该待解压文件对应的软件安装文件夹进行更新的情况,即存在待更新的软件安装文件夹对象;

针对该种情况,在S1之前,还应该包括:

S01:获取软件安装包;

S02:解压缩所述软件安装包,在本地生成对应的软件安装文件夹。

在S3中,直接在软件安装文件夹中判断是否存储有对应的文件,以缩短搜索范围,提高判断效率。

绝大多数下都为此种更新方式,这种方式不仅能够针对已存在的文件进行更新,而且还能新增文件,实现对软件安装文件夹的更新,其适用性更广、更具针对性,能够进一步提高更新效率。

如图3所示,第二种情况:待解压文件内的所有文件都未存储在本地,即首次安装该软件的安装包。此种情况下,本地也不会存储有与上述待解压文件内文件对应的校验表;因此,执行S3后的结果为无,执行S4完后结束流程。

这种更新方式需要将待解压文件中的所有文件都进行解压,为完全解压;能够实现软件的软件安装包的首次安装。

本实施例,能够通过以文件校验表为依据的校验机制,准确定位出需要进行更新的文件,然后从待解压文件中针对性的只将待更新的文件解压出来,实现增量解压,而不是完全解压,从而显著的减少解压量,缩短解压时间,提高解压效率和文件更新效率。将本实施例运用于对软件安装文件中的海量小文件的更新,具有显著的效果,能够确保海量小文件快速、准确的完成更新。

假设平均一万多个文件解压时间大概180秒左右,采用本实施方式的优化的增量解压方式后,大大减少了更新时间,更新时间随着更新文件的减少而减少,一般情况下更新1~100个文件只需要1~10秒,而不采用本实施方式的增量解压方式,更新一个文件和更新所有文件的时间一样,都需要180秒。

实施例二

请参照图5,本实施例在实施例一的基础上,提供一种海量小文件快速更新的系统,包括:

第一获取模块1,用于获取待解压文件及其文件校验表;

第二获取模块2,用于遍历所述文件校验表中的文件目录树,获取一文件;判断本地是否存储有相应的文件;

第一判断模块3,用于判断本地是否存储有相应的文件;

第一解压模块4,用于若第一判断模块的判断结果为无,则从所述待解压文件中解压所述文件,并将所述文件对应的校验值存储在本地;

第二判断模块5,用于若第一判断模块的判断结果为有,则判断所述文件在所述文件校验表中的校验值与存储在本地的校验值是否一致;

第二解压模块6,用于若第二判断模块的判断结果为不一致,则从所述待解压文件中解压所述文件。

循环模块7,用于若所述第二判断模块的判断结果为一致,则返回执行第一判断模块,获取所述文件的下一文件。

第三获取模块8,用于获取软件安装包;

第三解压模块9,用于解压缩所述软件安装包,在本地生成对应的软件安装文件夹。

所述第一判断模块3,具体用于在所述软件安装文件夹中判断是否存储有相应的文件。

综上所述,本发明提供的海量小文件快速更新的方法及其系统,不仅实现了对已存在的软件安装文件的更新;还能实现软件安装文件的首次安装;进一步的,采用增量解压方式具有针对性的只解压出需要更新的文件,显著提高解压速度、缩短解压时间和更新时间,大大提高海量文件的更新效率,从而提升用户体验。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1