本发明属于应用更新技术领域,尤其涉及一种文件的处理方法、装置及系统。
背景技术:
应用程序增量更新时,运维人员会将该次增量更新对应的增量包和全量包部署到服务器。客户端应用程序启动时会连接服务器进行版本更新检查,检测到存在新版本的应用程序,则向客户端提示应用程序的新版版信息。客户端向服务器请求更新应用程序,为降低带宽占用,客户端只会从服务器下载该应用程序的新版本的增量包,而客户端为应急需求需要保留该应用程序的新版本的全量包。进而需要将从服务器获取到的新版本的增量包与客户端本地的全量包合并生成新版本的全量包。
现有技术中将增量包解包成文件后与客户端本地全量包文件合并再进行打包后生成新的全量包。
由于增量包解包过程以及全量包的打包过程耗费时间长,不能实现快速地生成新版本的全量包。
技术实现要素:
有鉴于此,本发明的目的在于提供一种文件的处理方法、装置及系统,以解决现有技术中将增量包合并到全量包导致耗费时间长的问题。
技术方案如下:
本发明提供一种文件的处理方法,应用于客户端,包括:
获取增量包文件流;其中,所述增量包文件流包括增量包索引文件和至少一个资源文件,所述增量包索引文件中存储有文件名称、文件位置信息,文件名称与文件位置信息之间存在对应关系;
根据文件名称以及与文件名称对应的文件位置信息,从所述增量包文件流中获取与每个文件名称对应的资源文件,直至获取到所述增量包索引文件中存储的全部文件名称对应的资源文件;
获取本地全量包的全量包索引文件;
依次判断增量包索引文件中的每个文件名称是否在全量包索引文件的文件名称中存在相同的文件名称;
若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中存在相同的文件名称,则利用从增量包文件流中获取到的与该文件名称对应的资源文件,更新本地全量包中与该文件名称相同的文件名称对应的资源文件;
若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中不存在相同的文件名称,则将从增量包文件流中获取到的与该文件名称对应的资源文件添加到本地全量包的资源文件中;
根据本地全量包的资源文件,打包生成新的全量包。
优选地,所述根据本地全量包的资源文件,打包生成新的全量包包括:
获取本地全量包中包括的每个资源文件的文件名称;
根据文件名称生成新的全量包索引文件;其中,新的全量包索引文件中为每个资源文件预留位置信息存储空间;
针对每个资源文件,确定该资源文件在全量包文件流中的起始位置和终止位置;
将该资源文件在全量包文件流中的起始位置和终止位置存储至为该资源文件预留的位置信息存储空间;
将该资源文件加入全量包文件流中;返回执行针对每个资源文件,确定该资源文件在全量包文件流中的起始位置和终止位置的步骤及其后续步骤,直至完成将每个资源文件全部加入全量包文件流,得到新的全量包。
优选地,所述依次将每个资源文件加入全量包文件流中包括:
获取每个资源文件的压缩标识;
若所述压缩标识表示压缩,则利用压缩插件压缩该资源文件;
将压缩后的该资源文件加入全量包文件流中。
优选地,所述新的全量包索引文件中还包括:文件相对路径;
其中,得到新的全量包之后,还包括:
根据该新的全量包的全量包索引文件,依次获取与每个文件名称对应的资源文件以及该资源文件的文件相对路径;
将获取到的资源文件存储至该资源文件的文件相对路径。
本发明还提供了一种文件的处理方法,应用于服务器,包括:
获取待打包的资源文件;
根据待打包的资源文件的文件名称,生成索引文件;其中,所述索引文件中为每个待打包的资源文件预留位置信息存储空间;
针对每个待打包的资源文件,确定该待打包的资源文件在数据包文件流中的起始位置和终止位置;
将该待打包的资源文件在数据包文件流中的起始位置和终止位置存储至为该待打包的资源文件预留的位置信息存储空间;
将该待打包的资源文件加入数据包文件流中;返回执行针对每个待打包的资源文件,确定该待打包的资源文件在数据包文件流中的起始位置和终止位置的步骤及其后续步骤;直至完成将每个待打包的资源文件全部加入数据包文件流,得到打包后的数据包。
本发明还提供了一种文件的处理装置,应用于客户端,包括:
第一获取单元,用于获取增量包文件流;其中,所述增量包文件流包括增量包索引文件和至少一个资源文件,所述增量包索引文件中存储有文件名称、文件位置信息,文件名称与文件位置信息之间存在对应关系;
第二获取单元,用于根据文件名称以及与文件名称对应的文件位置信息,从所述增量包文件流中获取与每个文件名称对应的资源文件,直至获取到所述增量包索引文件中存储的全部文件名称对应的资源文件;
第三获取单元,用于获取本地全量包的全量包索引文件;
判断单元,用于依次判断增量包索引文件中的每个文件名称是否在全量包索引文件的文件名称中存在相同的文件名称;
更新单元,用于若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中存在相同的文件名称,则利用从增量包文件流中获取到的与该文件名称对应的资源文件,更新本地全量包中与该文件名称相同的文件名称对应的资源文件;
添加单元,用于若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中不存在相同的文件名称,则将从增量包文件流中获取到的与该文件名称对应的资源文件添加到本地全量包的资源文件中;
打包单元,用于根据本地全量包的资源文件,打包生成新的全量包。
优选地,所述打包单元包括:
获取子单元,用于获取本地全量包中包括的每个资源文件的文件名称;
生成子单元,用于根据文件名称生成新的全量包索引文件;其中,新的全量包索引文件中为每个资源文件预留位置信息存储空间;
确定子单元,用于针对每个资源文件,确定该资源文件在全量包文件流中的起始位置和终止位置;
存储子单元,用于将该资源文件在全量包文件流中的起始位置和终止位置存储至为该资源文件预留的位置信息存储空间;
加入子单元,用于将该资源文件加入全量包文件流中,调用所述确定子单元,直至完成将每个资源文件全部加入全量包文件流,得到新的全量包。
优选地,还包括:
解包单元,用于根据该新的全量包的全量包索引文件,依次获取与每个文件名称对应的资源文件以及该资源文件的文件相对路径;将获取到的资源文件存储至该资源文件的文件相对路径。
本发明还提供了一种文件的处理装置,应用于服务器,包括:
第四获取单元,用于获取待打包的资源文件;
生成单元,用于根据待打包的资源文件的文件名称,生成索引文件;其中,所述索引文件中为每个待打包的资源文件预留位置信息存储空间;
确定单元,用于针对每个待打包的资源文件,确定该待打包的资源文件在数据包文件流中的起始位置和终止位置;
存储单元,用于将该待打包的资源文件在数据包文件流中的起始位置和终止位置存储至为该待打包的资源文件预留的位置信息存储空间;
加入单元,用于将该待打包的资源文件加入数据包文件流中,调用所述确定单元,直至完成将每个待打包的资源文件全部加入数据包文件流,得到打包后的数据包。
本发明还提供了一种文件的处理系统,包括:
客户端以及与客户端连接的服务器;其中,所述客户端应用如上所述的文件的处理方法,所述服务器应用如上所述的文件的处理方法。
与现有技术相比,本发明提供的上述技术方案具有如下优点:
从上述技术方案可知,本申请中增量包文件流包括增量包索引文件和至少一个资源文件,所述增量包索引文件中存储有文件名称、文件位置信息,文件名称与文件位置信息之间存在对应关系,在获取到增量包文件流后,根据索引文件中的文件名称以及与文件名称对应的文件位置信息,可以直接从所述增量包文件流中获取与每个文件名称对应的资源文件,而不需要将增量包文件流整体进行解压后才能分别获取到增量包中包括的各个资源文件,节省了对增量包解包的过程;获取本地全量包的全量包索引文件,然后依次判断增量包索引文件中的每个文件名称是否在全量包索引文件的文件名称中存在相同的文件名称;若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中存在相同的文件名称,则利用从增量包文件流中获取到的与该文件名称对应的资源文件,更新本地全量包中与该文件名称相同的文件名称对应的资源文件;若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中不存在相同的文件名称,则将从增量包文件流中获取到的与该文件名称对应的资源文件添加到本地全量包的资源文件中;根据本地全量包的资源文件,打包生成新的全量包。由于节省了对增量包解包的过程,因此解决了由于对增量包解包过程浪费时间的问题,提高了合并效率,能够实现快速地生成新版本的全量包。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种文件的处理方法的流程图;
图2是本发明实施例提供的另一种文件的处理方法的流程图;
图3是本发明实施例提供的索引文件的示意图;
图4是本发明实施例提供的另一种文件的处理方法的流程图;
图5是本发明实施例提供的一种文件的处理装置的结构示意图;
图6是本发明实施例提供的另一种文件的处理装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
客户端已经安装的应用程序,当存在该应用程序的新版本时,需要对该应用程序进行更新,以升级该应用程序的版本。现有技术中对应用程序更新的过程为:服务器打包增量包,接收到客户端发送的已经安装的应用程序的版本信息后,判断客户端已经安装的应用程序的版本信息与当前最新版本信息是否相同,若不同,则根据最新版本信息与客户端已经安装的应用程序的版本信息的差距,响应客户端的下载请求,将与差距对应的增量包下发至客户端;客户端下载得到增量包后对已经安装的应用程序进行更新。
通常情况下,客户端下载得到增量包后,将增量包解包成多个资源文件后,与本地全量包中包括的多个资源文件合并后,再对合并后的资源文件进行打包,生成新的全量包。由于对增量包解包以及后续打包过程均需要耗费较长的时间,导致工作效率低。其中,在增量包为压缩文件时,若对增量包进行解包,需要对由增量包中包括的全部资源文件构成的压缩数据流整体进行解压,以分别得到增量包中包括的每个资源文件。正是由于需要对全部资源文件构成的压缩数据流整体进行解压,且全部资源文件构成的压缩数据流整体很大,导致需要耗费很长时间才能完成解包操作。
针对此,本实施例提供了一种文件的处理方法,应用于客户端,如移动终端、电脑等电子设备,所述客户端安装有至少一个应用程序。
参见图1,该实施例包括以下步骤:
s101、获取增量包文件流;其中,所述增量包文件流包括增量包索引文件和至少一个资源文件,所述增量包索引文件中存储有文件名称、文件位置信息,文件名称与文件位置信息之间存在对应关系;
本实施例中,从服务器获取到的增量包文件流中,除了包括资源文件外,还包括增量包索引文件。资源文件用于对应用程序的功能进行更新或修复。增量包索引文件用于存储每个资源文件的文件名称以及对应的文件位置信息,文件名称与文件位置信息一一对应。其中,文件位置信息指的是对应的资源文件在增量包文件流中所处的起始位置和终止位置。
根据文件位置信息,可以从增量包文件流中确定每个资源文件的位置,并从相应位置处获取到对应的资源文件。
s102、根据文件名称以及与文件名称对应的文件位置信息,从所述增量包文件流中获取与每个文件名称对应的资源文件,直至获取到所述增量包索引文件中存储的全部文件名称对应的资源文件;
增量包文件流中包括至少一个资源文件,增量包索引文件中存储有每个资源文件的文件名称以及文件位置信息。
根据文件位置信息,可以确定对应的文件名称对应的资源文件在整体增量包文件流中的位置,进而可以提取到对应的资源文件。而不需要将增量包文件流整体进行解压后才能分别获取到增量包中包括的各个资源文件。
s103、获取本地全量包的全量包索引文件;
全量包索引文件与步骤s101中涉及到的增量包索引文件的结构是相同的,区别在于,全量包索引文件中存储的是全量包中各个资源文件的文件名称、文件位置信息,而增量包索引文件中存储的是增量包中各个资源文件的文件名称、文件位置信息。
s104、依次判断增量包索引文件中的每个文件名称是否在全量包索引文件的文件名称中存在相同的文件名称;
若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中存在相同的文件名称,则执行步骤s105;
若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中不存在相同的文件名称,则执行步骤s106;
增量包中可能包括与全量包中资源文件名称相同的资源文件,只是增量包中这一文件名称相同的资源文件是功能更新或者功能修复后的资源文件。此种情况下,在将增量包合并到全量包时,并不能简单的将增量包中包括的各个资源文件合并到全量包的资源文件中。而是利用增量包中文件名称与全量包中文件名称相同的资源文件,更新全量包中该文件名称相同的资源文件。
增量包中包括的对应新功能的资源文件是全量包中没有的,即增量包中包括的对应新功能的资源文件的文件名称与全量包每个资源文件的文件名称都是不同的。此种情况下,在将增量包合并到全量包时,直接将增量包中包括的对应新功能的资源文件添加到全量包的资源文件中。
本实施例中,通过判断增量包索引文件中的文件名称与全量包索引文件中的文件名称是否相同,以确定全量包中是否存在与增量包中文件名称相同的资源文件。
具体地的,针对增量包索引文件中的每个文件名称,依次与全量包索引文件中的全部文件名称一一比对,以确定全量包中是否存在与增量包中文件名称相同的资源文件。
为了便于理解,本实施例中采用增量包中包括2个资源文件,对应的文件名称分别是资源文件一,资源文件二,全量包中包括5个资源文件,对应的文件名称分别是资源文件a,资源文件b,资源文件一,资源文件c,资源文件d为例,描述本实施例中确定全量包中是否存在与增量包中文件名称相同的资源文件的实现方式。
首先,将增量包索引文件中的资源文件一这一文件名称分别与全量包索引文件中的资源文件a比对,确定两个文件名称不同,继续与全量包索引文件中下一个文件名称资源文件b比对,确定两个文件名称不同,继续与全量包索引文件中下一个文件名称资源文件一比对,确定两个文件名称相同,则确定全量包中存在与增量包中文件名称相同的资源文件。此时,直接退出继续与全量包索引文件中下一个文件名称的比对步骤,完成判断两个文件名称是否相同的流程。
接下来,对增量包索引文件中的资源文件二这一文件名称分别与全量包索引文件中的资源文件a比对,确定两个文件名称不同,继续与全量包索引文件中下一个文件名称资源文件b比对,确定两个文件名称不同,继续与全量包索引文件中下一个文件名称资源文件一比对,确定两个文件名称不同,继续与全量包索引文件中下一个文件名称资源文件c比对,确定两个文件名称不同,继续与全量包索引文件中下一个文件名称资源文件d比对,确定两个文件名称不同,由于已经完成与全量包索引文件中全部文件名称的比对,均与增量包索引文件中的资源文件二这一文件名称不同,因此,确定全量包中不存在与增量包中文件名称相同的资源文件。
s105、利用从增量包文件流中获取到的与该文件名称对应的资源文件,更新本地全量包中与该文件名称相同的文件名称对应的资源文件;
在实际应用中,将从增量包文件流中获取到的资源文件覆盖全量包中与该资源文件的文件名称相同的资源文件。
s106、将从增量包文件流中获取到的与该文件名称对应的资源文件添加到本地全量包的资源文件中;
s107、根据本地全量包的资源文件,打包生成新的全量包。
通过执行步骤s105和s106,实现增量包中的资源文件与本地全量包的资源文件的合并,将合并后的资源文件打包生成新的全量包。
从上述技术方案可知,本实施例中增量包文件流包括增量包索引文件和至少一个资源文件,所述增量包索引文件中存储有文件名称、文件位置信息,文件名称与文件位置信息之间存在对应关系,在获取到增量包文件流后,根据索引文件中的文件名称以及与文件名称对应的文件位置信息,可以直接从所述增量包文件流中获取与每个文件名称对应的资源文件,而不需要将增量包文件流整体进行解压后才能分别获取到增量包中包括的各个资源文件,节省了对增量包解包的过程;获取本地全量包的全量包索引文件,然后依次判断增量包索引文件中的每个文件名称是否在全量包索引文件的文件名称中存在相同的文件名称;若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中存在相同的文件名称,则利用从增量包文件流中获取到的与该文件名称对应的资源文件,更新本地全量包中与该文件名称相同的文件名称对应的资源文件;若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中不存在相同的文件名称,则将从增量包文件流中获取到的与该文件名称对应的资源文件添加到本地全量包的资源文件中;根据本地全量包的资源文件,打包生成新的全量包。由于节省了对增量包解包的过程,因此解决了由于对增量包解包过程浪费时间的问题,提高了合并效率,能够实现快速地生成新版本的全量包。
本实施例还公开了另一种文件的处理方法,应用于客户端,所述客户端安装有至少一个应用程序。
参见图2,该实施例包括以下步骤:
s201、获取增量包文件流;其中,所述增量包文件流包括增量包索引文件和至少一个资源文件,所述增量包索引文件中存储有文件名称、文件位置信息,文件名称与文件位置信息之间存在对应关系;
s202、根据文件名称以及与文件名称对应的文件位置信息,从所述增量包文件流中获取与每个文件名称对应的资源文件,直至获取到所述增量包索引文件中存储的全部文件名称对应的资源文件;
s203、获取本地全量包的全量包索引文件;
s204、依次判断增量包索引文件中的每个文件名称是否在全量包索引文件的文件名称中存在相同的文件名称;
若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中存在相同的文件名称,则执行步骤s205;
若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中不存在相同的文件名称,则执行步骤s206;
s205、利用从增量包文件流中获取到的与该文件名称对应的资源文件,更新本地全量包中与该文件名称相同的文件名称对应的资源文件;
s206、将从增量包文件流中获取到的与该文件名称对应的资源文件添加到本地全量包的资源文件中;
本实施例中步骤s201-s206的实现方式与上一实施例中步骤s101-s106的实现方式类似,此处不再赘述。
下面详细介绍对增量包中的资源文件与本地全量包的资源文件的合并后的资源文件打包生成新的全量包的方法。
s207、获取本地全量包中包括的每个资源文件的文件名称;
通过执行步骤s205-s206,本步骤中本地全量包中包括的资源文件是将增量包中的资源文件与本地全量包的资源文件合并后的资源文件。
在实际应用中,可以通过获取版本文件的列表,获知本地全量包中包括的全部资源文件的总数,并可以获取到每个资源文件的文件名称。此处版本文件指的是应用程序运行时所依赖的执行码集合。
s208、根据文件名称生成新的全量包索引文件;其中,新的全量包索引文件中为每个资源文件预留位置信息存储空间;
本实施例中全量包文件流的结构如下表1所示。
表1
表1中,索引长度用于标识索引文件在全量包文件流中的位置,使得后续根据索引长度的4字节存储空间内存储的内容可以获取到该全量包的索引文件。
索引内容中存储有全部资源文件的文件名称,还可以存储有与每个文件名称对应的哈希值以及文件相对路径。其中,文件相对路径指的是该资源文件在客户端执行目录下的相对路径。
如图3所示,filefid=“0”表示的是folderid=“0”>resource\center\common\zh-chs\scripts</folder>的相对路径。
图3中,md5所示的内容为资源文件对应的哈希值。其中,哈希值为在获知资源文件后根据资源文件计算得到的。
文件位置信息用于存储每个资源文件的起始位置和终止位置;此存储空间需要预留。其中,为每个资源文件预留8字节的空间,从而文件位置信息的整体空间大小等于全量包中包括的全部资源文件的个数n与8乘积的字节数。
资源文件内容用于存储全量包中包括的全部资源文件。
在实际应用中,确定了全量包中包括的全部资源文件的个数、每个资源文件的文件名称、每个资源文件对应的哈希值以及每个资源文件的相对路径后,可以计算得到存储全部资源文件的文件名称、哈希值以及相对路径所需的存储空间,从而设置索引长度内存储的内容,并且将全部资源文件的文件名称、哈希值以及相对路径存储至表1的索引内容中。
s209、针对每个资源文件,确定该资源文件在全量包文件流中的起始位置和终止位置;
针对每个资源文件,根据表1中之前已经存储内容的终止位置以及该资源文件的长度,确定该资源文件在全量包文件流中的起始位置和终止位置。
具体地,表1中之前已经存储内容的终止位置的下一个位置作为该资源文件的起始位置;该资源文件的起始位置加上该资源文件的长度(单位为字节)的位置作为该资源文件的终止位置。
其中,针对全量包中的第一个资源文件,第一个资源文件的起始位置为索引内容的终止位置的下一个位置,针对全量包中的第二个资源文件,第二个资源文件的起始位置为第一个资源文件的终止位置的下一个位置,依次类推,针对全量包中的第三个资源文件,第三个资源文件的起始位置为第二个资源文件的终止位置的下一个位置。
s210、将该资源文件在全量包文件流中的起始位置和终止位置存储至为该资源文件预留的位置信息存储空间;
确定了一个资源文件在全量包文件流中的起始位置和终止位置后,将该资源文件在全量包文件流中的起始位置和终止位置存储至为该资源文件预留的位置信息存储空间。
s211、将该资源文件加入全量包文件流中;返回执行步骤s209,直至完成将每个资源文件全部加入全量包文件流,得到新的全量包。
在为该资源文件预留的位置信息存储空间内填充该资源文件的起始位置和终止文件后,将该资源文件存储至资源文件内容中,实现将该资源文件加入全量包文件流中。
本实施例中按照索引文件中存储的各个资源文件的文件名称,顺序执行步骤s209-s211,实现将全量包中包括的各个资源文件顺序加入全量包文件流中,完成对合并后的资源文件的打包操作,得到新的全量包。
虽然本实施例中步骤s209-s210在步骤s211之前,但是本实施例中并不限于执行步骤s209-s210与步骤s211的顺序。可以先执行将资源文件加入全量包文件流的操作,然后再执行将加入全量包文件流的该资源文件的起始位置以及终止位置存储至为该资源文件预留的位置信息存储空间的操作。
一种实现方式为:资源文件配置有压缩标识,在将资源文件加入全量包文件流之前,获取该资源文件的压缩标识,根据压缩标识确定是否要执行对该资源文件的压缩操作。
若压缩标识的值为“true”,表示需要执行对该资源文件的压缩操作,则利用压缩插件压缩该资源文件,并将压缩后的该资源文件加入全量包文件流中。
若压缩标识的值为“false”,表示不需要执行对该资源文件的压缩操作,则直接将该资源文件加入全量包文件流中。
需要注意的是,若需要执行对该资源文件的压缩操作,那么在确定该资源文件在全量包文件流中的起始位置和终止位置时,利用的该资源文件的长度为该资源文件压缩后的长度。
从上述技术方案可知,本实施例中增量包中除包括资源文件外,还包括存储有文件名称、文件位置信息的索引文件,在获取到增量包文件流后,根据索引文件中的文件名称以及与文件名称对应的文件位置信息,可以直接从所述增量包文件流中获取与每个文件名称对应的资源文件,而不需要将增量包文件流整体进行解压后才能分别获取到增量包中包括的各个资源文件,节省了对增量包解包的过程;获取本地全量包的全量包索引文件,然后依次判断增量包索引文件中的每个文件名称是否在全量包索引文件的文件名称中存在相同的文件名称;若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中存在相同的文件名称,则利用从增量包文件流中获取到的与该文件名称对应的资源文件,更新本地全量包中与该文件名称相同的文件名称对应的资源文件;若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中不存在相同的文件名称,则将从增量包文件流中获取到的与该文件名称对应的资源文件添加到本地全量包的资源文件中;根据本地全量包的资源文件,打包生成新的全量包。由于节省了对增量包解包的过程,因此解决了由于对增量包解包过程浪费时间的问题,提高了合并效率,能够实现快速生成与新版本对应的全量包。且,对合并后的资源文件打包的方式是对每个资源文件进行处理后顺序加入全量包文件流中,相较于现有技术中对全部资源文件整体进行处理后打包的方式,本实施例中在获取某个资源文件时可以直接获取到该资源文件,而不需要对全部资源文件整体进行解压后才能从解压后的文件中获取到该资源文件。
可选地,在其他实施例中,在得到新的全量包后,还包括对新的全量包的解包操作,具体解包操作为:
步骤1、根据该新的全量包的全量包索引文件,依次获取与每个文件名称对应的资源文件以及该资源文件的文件相对路径;
解包操作实质是与上述对合并后的资源文件打包生成新的全量包的反过程。基于上述表1所示的全量包文件流的结构,根据前4个字节的索引长度内容,获取到该新的全量包的全量包索引文件,根据该新的全量包的全量包索引文件中的文件名称,获取与该文件名称对应的资源文件以及该资源文件的文件相对路径。
一种实现方式中,在获取到与该文件名称对应的资源文件以及该资源文件的文件相对路径后,获取该资源文件的压缩标识,根据压缩标识确定该资源文件是否被压缩。
若压缩标识的值为“true”,表示该资源文件被压缩,则利用解压插件解压该资源文件,得到解压后的资源文件。
若压缩标识的值为“false”,表示该资源文件没有被压缩,则直接获取到的就是该资源文件。
步骤2、将获取到的资源文件存储至该资源文件的文件相对路径。
需要注意的是,新的全量包除可以是通过执行步骤s201-s211得到的外,还可以是对客户端安装的应用程序进行更新时,客户端直接从服务器获取全量包文件流后得到的新的全量包。
本实施例还提供了一种文件的处理方法,应用于服务器,参见图4,该实施例包括以下步骤:
s301、获取待打包的资源文件;
本实施例中,服务器打包生成增量包和全量包。其中,无论是打包生成增量包还是打包生成全量包,都先获取待打包的资源文件。
对于全量包而言,待打包的资源文件为应用程序的全部资源文件;对于增量包而言,待打包的资源文件为对应用程序的功能进行更新或修复的资源文件。
s302、根据待打包的资源文件的文件名称,生成索引文件;其中,所述索引文件中为每个待打包的资源文件预留位置信息存储空间;
s303、针对每个待打包的资源文件,确定该待打包的资源文件在数据包文件流中的起始位置和终止位置;
s304、将该待打包的资源文件在数据包文件流中的起始位置和终止位置存储至为该待打包的资源文件预留的位置信息存储空间;
s305、将该待打包的资源文件加入数据包文件流中;返回执行步骤s303;直至完成将每个待打包的资源文件全部加入数据包文件流,得到打包后的数据包。
本实施例中步骤s302-s305的实现方式与图2所示的步骤s208-s211的实现方式类似,此处不再赘述。
从上述技术方案可知,本实施例中服务器在打包生成数据包时,对每个待打包的资源文件进行处理后顺序加入数据包文件流中,相较于现有技术中对全部资源文件整体进行处理后打包的方式,本实施例中在客户端从服务器获取到数据包后,并想要从数据包中获取某个资源文件时可以直接获取到该资源文件,而不需要对全部资源文件整体进行解压后才能从解压后的文件中获取到该资源文件。节省了获取到某个资源文件的时间,可以实现快速获取到所需要的资源文件。
对应图1-图2所示的文件的处理方法,本发明还提供了一种文件的处理装置,所述处理装置可以集成到客户端,如移动设备、笔记本电脑、台式电脑等电子设备。
所述处理装置的结构示意图请参阅图5所示,本实施例中处理装置包括:
第一获取单元501、第二获取单元502、第三获取单元503、判断单元504、更新单元505、添加单元506和打包单元507;
第一获取单元501,用于获取增量包文件流;其中,所述增量包文件流包括增量包索引文件和至少一个资源文件,所述增量包索引文件中存储有文件名称、文件位置信息,文件名称与文件位置信息之间存在对应关系;
第二获取单元502,用于根据文件名称以及与文件名称对应的文件位置信息,从所述增量包文件流中获取与每个文件名称对应的资源文件,直至获取到所述增量包索引文件中存储的全部文件名称对应的资源文件;
第三获取单元503,用于获取本地全量包的全量包索引文件;
判断单元504,用于依次判断增量包索引文件中的每个文件名称是否在全量包索引文件的文件名称中存在相同的文件名称;
更新单元505,用于若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中存在相同的文件名称,则利用从增量包文件流中获取到的与该文件名称对应的资源文件,更新本地全量包中与该文件名称相同的文件名称对应的资源文件;
添加单元506,用于若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中不存在相同的文件名称,则将从增量包文件流中获取到的与该文件名称对应的资源文件添加到本地全量包的资源文件中;
打包单元507,用于根据本地全量包的资源文件,打包生成新的全量包。
可选地,本实施例中,打包单元507包括:
获取子单元、生成子单元、确定子单元、存储子单元和加入子单元;
所述获取子单元,用于获取本地全量包中包括的每个资源文件的文件名称;
所述生成子单元,用于根据文件名称生成新的全量包索引文件;其中,新的全量包索引文件中为每个资源文件预留位置信息存储空间;
所述确定子单元,用于针对每个资源文件,确定该资源文件在全量包文件流中的起始位置和终止位置;
所述存储子单元,用于将该资源文件在全量包文件流中的起始位置和终止位置存储至为该资源文件预留的位置信息存储空间;
所述加入子单元,用于将该资源文件加入全量包文件流中,调用所述确定子单元,直至完成将每个资源文件全部加入全量包文件流,得到新的全量包。
在图5所示处理装置的基础上,在其他实施例中,所述处理装置还可以包括:
解包单元;
所述解包单元,用于根据该新的全量包的全量包索引文件,依次获取与每个文件名称对应的资源文件以及该资源文件的文件相对路径;将获取到的资源文件存储至该资源文件的文件相对路径。
从上述技术方案可知,本实施例中增量包中除包括资源文件外,还包括存储有文件名称、文件位置信息的索引文件,在获取到增量包文件流后,根据索引文件中的文件名称以及与文件名称对应的文件位置信息,可以直接从所述增量包文件流中获取与每个文件名称对应的资源文件,而不需要将增量包文件流整体进行解压后才能分别获取到增量包中包括的各个资源文件,节省了对增量包解包的过程;获取本地全量包的全量包索引文件,然后依次判断增量包索引文件中的每个文件名称是否在全量包索引文件的文件名称中存在相同的文件名称;若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中存在相同的文件名称,则利用从增量包文件流中获取到的与该文件名称对应的资源文件,更新本地全量包中与该文件名称相同的文件名称对应的资源文件;若判断增量包索引文件中的文件名称在全量包索引文件中的文件名称中不存在相同的文件名称,则将从增量包文件流中获取到的与该文件名称对应的资源文件添加到本地全量包的资源文件中;根据本地全量包的资源文件,打包生成新的全量包。由于节省了对增量包解包的过程,因此解决了由于对增量包解包过程浪费时间的问题,提高了合并效率,能够实现快速生成与新版本对应的全量包。且,对合并后的资源文件打包的方式是对每个资源文件进行处理后顺序加入全量包文件流中,相较于现有技术中对全部资源文件整体进行处理后打包的方式,本实施例中在获取某个资源文件时可以直接获取到该资源文件,而不需要对全部资源文件整体进行解压后才能从解压后的文件中获取到该资源文件。
对应图4所示的文件的处理方法,本发明还提供了另一种文件的处理装置,所述处理装置可以集成到服务器,
所述处理装置的结构示意图请参阅图6所示,本实施例中处理装置包括:
第四获取单元601、生成单元602、确定单元603、存储单元604和加入单元605;
第四获取单元601,用于获取待打包的资源文件;
生成单元602,用于根据待打包的资源文件的文件名称,生成索引文件;其中,所述索引文件中为每个待打包的资源文件预留位置信息存储空间;
确定单元603,用于针对每个待打包的资源文件,确定该待打包的资源文件在数据包文件流中的起始位置和终止位置;
存储单元604,用于将该待打包的资源文件在数据包文件流中的起始位置和终止位置存储至为该待打包的资源文件预留的位置信息存储空间;
加入单元605,用于将该待打包的资源文件加入数据包文件流中,调用所述确定单元,直至完成将每个待打包的资源文件全部加入数据包文件流,得到打包后的数据包。
从上述技术方案可知,本实施例中服务器在打包生成数据包时,对每个待打包的资源文件进行处理后顺序加入数据包文件流中,相较于现有技术中对全部资源文件整体进行处理后打包的方式,本实施例中在客户端从服务器获取到数据包后,并想要从数据包中获取某个资源文件时可以直接获取到该资源文件,而不需要对全部资源文件整体进行解压后才能从解压后的文件中获取到该资源文件。节省了获取到某个资源文件的时间,可以实现快速获取到所需要的资源文件。
对应上述的文件的处理方法,本发明还提供了一种文件的处理系统,包括客户端和服务器,客户端采用图1或图2所示的文件的处理方法完成对从服务器获取到的增量包以及客户端本地的全量包的合并操作,服务器采用图4所示的文件的处理方法打包生成增量包或全量包。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的装置而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。