文件下载方法、装置及终端设备与流程

文档序号:11710076阅读:202来源:国知局
文件下载方法、装置及终端设备与流程

本发明涉及计算机移动通信技术领域,具体而言,涉及一种文件下载方法、装置及终端设备。



背景技术:

通过网络使用多线程进行文件下载时,目标文件分为多个分段文件被多个下载线程分别进行下载,下载后再合成一个完整的文件。由于系统在多线程调度运行的不确定性,多个下载线程去分别下载对应的分段文件时,并不能保证多个下载线程能够同时完成下载任务。在网络状况比较差的情况下,多个下载线程完成下载任务的时间点会相差很大,尤其在cpu性能较差的移动终端设备上,甚至还会出现一个下载线程还没开始下载,而另外一个下载线程已经完成下载任务的情况,因此,在网络状况或设备性能低等情况下,下载速度往往是非常慢的。



技术实现要素:

本发明的目的在于提供一种文件下载方法、装置及终端设备,可以提高下载速度。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种文件下载方法,包括:根据目标下载文件的信息,启动多个分段下载线程,分别下载所述目标下载文件的多个分段文件;当所述多个分段下载线程中的一个分段下载线程完成下载任务时,将剩余分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程;按照预定比例截取所述待协助分段下载线程中 未下载内容作为尾部片段;启动所述已完成下载任务的分段下载线程下载所述尾部片段。

进一步的,所述根据目标下载文件的信息,启动多个分段下载线程,分别下载所述目标下载文件的多个分段文件,包括:根据目标下载文件的信息,获取所述目标下载文件的文件大小;对所述目标下载文件进行文件分段处理,获得所述目标下载文件的多个分段文件;根据分段文件的数量分配多个分段下载线程;启动所述多个分配下载线程分别下载所述多个分段文件。

进一步的,所述按照预定比例截取所述待协助分段下载线程未下载内容的尾部片段之前,还包括:判断待协助分段下载线程未下载内容的数据量是否小于预设阈值,如果是,则直接由所述待协助分段下载线程下载未下载内容,否则,执行所述按照预定比例截取所述待协助分段下载线程中未下载内容。

进一步的,所述将剩余分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程之前,还包括:监听所有分段下载线程的下载状态以及下载中的分段文件的大小变化;判断是否有分段下载线程已完成下载任务;如果有分段下载线程已完成下载任务,则判断是否所有分段下载线程均已完成下载任务,如果没有完成,则执行将剩余分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程的步骤;如果没有分段下载线程已完成下载任务,返回监听的步骤。

进一步的,所述按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段,包括:将所述待协助分段下载线程未下 载内容按照二分法分为头部片段和尾部片段;截取所述尾部片段,分配给已完成下载任务的分段下载线程。

第二方面,本发明实施例提供了一种文件下载装置,所述装置包括第一启动模块,用于根据目标下载文件的信息,启动多个分段下载线程,分别下载所述目标下载文件的多个分段文件;获取模块,用于当所述多个分段下载线程中的一个分段下载线程完成下载任务时,将剩余分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程;截取模块,用于按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段;第二启动模块,用于启动所述已完成下载任务的分段下载线程下载所述尾部片段。

第三方面,本发明实施例提供了一种终端设备,包括:存储器以及处理器,所述存储器存储有上述文件下载装置中的模块,所述处理器用于运行存储在所述存储器内的模块。

本发明实施例提供的文件下载方法、装置及终端设备,通过将其他分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程,按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段,启动所述已完成下载任务的分段下载线程下载所述尾部片段,不断循环此过程,直至所有分段文件被下载完毕。由于已完成下载任务的下载线程可以帮助其他未完成下载任务的下载线程完成一部分下载任务,因此,整体的文件下载速度提高了。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的终端设备的结构框图;

图2示出了本发明第一实施例提供的一种文件下载方法的流程示意图;

图3示出了本发明第二实施例提供的一种文件下载方法的流程示意图;

图4示出了本发明第三实施例提供的一种文件下载装置的结构框图;

图5示出了本发明第四实施例提供的一种文件下载装置的结构框图。

具体实施方式

本发明实施例所提供的文件下载方法及装置可应用于用户终端或服务器等终端设备中,例如,可运行于如图1所示的终端设备100中。

于本发明实施例中,终端设备100优选为移动终端设备,例如可以包括智能手机、平板电脑、电子书阅读器、膝上型便携计算机、穿戴式移动终端等等。

如图1所示,终端设备100包括存储器102、存储控制器104,一个或多个(图中仅示出一个)处理器106、外设接口108、射频模块110、音频模块112、触控屏幕114等。这些组件通过一条或多条通讯总线/信号线116相互通讯。

存储器102可用于存储软件程序以及模块,如本发明实施例中的文件下载方法及装置对应的程序指令/模块,处理器106通过运行存储在存储器102内的软件程序以及模块,从而执行各种功能应用以及数据处理,如本发明实施例提供的文件下载方法。

存储器102可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。处理器106以及其他可能的组件对存储器102的访问可在存储控制器104的控制下进行。

外设接口108将各种输入/输入装置耦合至处理器106以及存储器102。在一些实施例中,外设接口108,处理器106以及存储控制器104可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

射频模块110用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。

音频模块112向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。

触控屏幕114在终端设备100与用户之间同时提供一个输出及输入界面。具体地,触控屏幕114向用户显示视频输出,这些视频输出的内容可包括文字、图形、视频及其任意组合。

可以理解,图1所示的结构仅为示意,终端设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

于本发明实施例中,终端设备100中安装有客户端,该客户端可以是浏览器也可以是第三方应用软件,与服务器(server)端相对应,为用户提供服务,例如将服务器端的文件下载到终端设备。

为了提高在网络状况下或者设备性能较低的下载速度,本发明实施例提出一种文件下载方法及装置,在多个下载线程下载一个目标文件的多个分段文件时,当其中一个分段下载线程已完成当前下载任务时,将剩余分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程,将该分段下载线程的未下载部分重新分配给已完成下载任务的分段下载线程,不断循环此过程,直至所有分段文件被下载完毕。由于已完成下载任务的下载线程可以帮助其他未完成下载任务的下载线程完成一部分下载任务,因此,整体的文件下载速度提高了。

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

第一实施例

图2示出了本发明第一实施例提供的一种文件下载方法的流程图,请参阅图2,所述方法包括:

步骤s110,根据目标下载文件的信息,启动多个分段下载线程,分别下载所述目标下载文件的多个分段文件;

在本发明实施例中,目标下载文件的信息为能够标识目标下载文件的信息,以便于下载线程明确下载目标,可包括目标下载文件的大小、文件头、文件名等信息。为了提高下载速度,可根据目标 下载文件的信息建立多个分段下载线程对具有目标下载文件的信息的文件进行下载。

步骤s120,当所述多个分段下载线程中的一个分段下载线程完成下载任务时,将剩余分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程;

将其他分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程,可由其他已完成下载任务的分段下载线程对其进行协助下载,使该未下载内容更快的完成下载。

步骤s130,按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段;

在本发明实施例中,可以根据待协助分段下载线程的未下载内容的数据量与其他其他分段下载线程中未下载内容的数据量之间的差值确定预定比例,当差值较小时,预定比例可以较小,当差值较大时,预定比例可以较大。尾部片段指的是按照预定比例截取待下载内容中离下载结束部分最近的内容片段,包括下载结束部分。

步骤s140,启动所述已完成下载任务的分段下载线程下载所述尾部片段。

不断重复步骤s120至步骤s140,直至所有分段文件被下载完毕。

本实施例提供的文件下载方法,通过将其他分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程,按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段,启动所述已完成下载任务的 分段下载线程下载所述尾部片段,不断循环此过程,直至所有分段文件被下载完毕。由于已完成下载任务的下载线程可以帮助其他未完成下载任务的下载线程完成一部分下载任务,因此,整体的文件下载速度提高了。

第二实施例

图3示出了本发明第二实施例提供的一种文件下载方法的流程图。请参阅图3,所述方法包括:

步骤s201,根据下载地址创建一个下载任务;

步骤s202,获取目标下载文件的文件大小;

启动文件下载器线程获取目标下载文件的文件大小,并更新到下载文件数据表。

步骤s203,对目标下载文件进行文件分段处理,获得所述目标下载文件的多个分段文件;

下载装置可以采用预定的分段规则将目标下载文件分为多个分段文件,分段文件的个数不超过预设阈值,其中,预设阈值可为默认数值或由用户设定,以限制下载的线程数量。在本发明实施例中,优选的,将目标下载文件等分为多个分段文件。当然,也可以采用其他分段规则,本发明的具体实施方式并不以此为限。

步骤s204,启动多个分段下载线程分别下载所述目标下载文件的多个分段文件;

文件下载控制器线程根据分段文件的数量分配一定数量的分段下载线程,并创建相对应的分段线程数据表,然后启动多个分段下载线程去分别下载目标下载文件的这些分段文件。

步骤s205,监听所有分段下载线程的下载状态以及下载中的分段文件的大小变化;

文件下载控制器线程不断循环监听所有分段下载线程的下载状态和下载文件总大小数据的变化,更新下载文件数据表。

分段下载线程在下载过程中将状态改变和下载的分段文件的数据的变化回调通知到文件下载控制器线程,更新相应的下载文件数据表和分段线程数据表。

步骤s206,判断是否有分段下载线程已完成下载任务,如果是,则执行步骤s207,返回步骤s205。

分段下载线程在下载过程中将状态变化和下载文件数据变化回调通知到下载控制器线程,更新相应的下载文件数据表和分段线程数据表。下载控制器线程可以根据通知判断是否有分段下载线程完成下载任务。

步骤s207,判断是否所有分段下载线程均已完成下载任务,如果是,则下载完成,否则执行步骤s208。

步骤s208,将剩余分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程;

当其中一条分段下载线程完成当前分段下载任务时,下载控制器线程根据收到分段线程下载完成状态通知,然后去查找其他分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程。

步骤s209,判断待协助分段下载线程未下载内容的数据量是否小于预设阈值,如果是,返回步骤s205,否则,执行步骤s210。

步骤s210,按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段;

如果待协助分段下载线程未下载内容的数据量小于预设阈值时不再切分当前下载任务,等待分段下载线程下载完成,否则,将未下载内容按照二分法把后面一部分需要下载的文件分配给已完成下载任务的分段下载线程,添加一条分段下载记录和更新被切分的分段线程记录。

步骤s211,启动所述已完成下载任务的分段下载线程下载所述尾部片段。

下载文件控制器线程控制监听到所有分段下载线程都是下载完成状态,则下载文件任务完成。

第三实施例

图4示出了本发明第三实施例提供的一种文件下载装置的结构框图,请参阅图4,本实施例中的装置可运行于终端设备,本实施例中的装置30包括:

第一启动模块31,用于根据目标下载文件的信息,启动多个分段下载线程,分别下载所述目标下载文件的多个分段文件;

获取模块32,用于当所述多个分段下载线程中的一个分段下载线程完成下载任务时,将剩余分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程;

截取模块33,用于按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段;

第二启动模块34,用于启动所述已完成下载任务的分段下载线程下载所述尾部片段。

本实施例中的各模块/单元可以是由软件代码实现,此时,上述的各模块/单元可存储于终端设备100的存储器102内。以上各模块/单元同样可以由硬件例如集成电路芯片实现。

第四实施例

图5示出了本发明第四实施例提供的一种文件下载装置的结构框图,请参阅图5,本实施例中的装置可运行于终端设备,本实施例中的装置40包括:

第一启动模块41,用于根据目标下载文件的信息,启动多个分段下载线程,分别下载所述目标下载文件的多个分段文件;

获取模块42,用于当所述多个分段下载线程中的一个分段下载线程完成下载任务时,将剩余分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程;

截取模块43,用于按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段;

第二启动模块44,用于启动所述已完成下载任务的分段下载线程下载所述尾部片段。

于本实施例中,所述第一启动模块41,包括:

信息获取单元411,用于根据目标下载文件的信息,获取所述目标下载文件的文件大小;

分段处理单元412,用于对所述目标下载文件进行文件分段处理,获得所述目标下载文件的多个分段文件;

线程分配单元413,用于根据分段文件的数量分配多个分段下载线程;

线程启动单元414,用于启动所述多个分配下载线程分别下载所述多个分段文件。

进一步的,还包括判断模块45,用于判断待协助分段下载线程未下载内容的数据量是否小于预设阈值,如果是,则直接由所述待协助分段下载线程下载未下载内容,否则,执行所述按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段。

进一步的,所述获取模块42还用于监听所有分段下载线程的下载状态以及下载中的分段文件的大小变化,判断是否有分段下载线程已完成下载任务,如果有分段下载线程已完成下载任务,则判断是否所有分段下载线程均已完成下载任务。

进一步的,所述截取模块43还用于将所述待协助分段下载线程未下载内容按照二分法分为头部片段和尾部片段,截取所述尾部片段,分配给已完成下载任务的分段下载线程。

本实施例中的各模块/单元可以是由软件代码实现,此时,上述的各模块/单元可存储于终端设备100的存储器102内。以上各模块/单元同样可以由硬件例如集成电路芯片实现。

综上所述,本发明实施例提供的文件下载方法及装置,通过将其他分段下载线程中未下载内容最多的分段下载线程或预计剩余下载时间最长的分段下载线程作为待协助分段下载线程,按照预定比例截取所述待协助分段下载线程中未下载内容作为尾部片段,启动所述已完成下载任务的分段下载线程下载所述尾部片段,不断循环此过程,直至所有分段文件被下载完毕。由于已完成下载任务的下载线程可以帮助其他未完成下载任务的下载线程完成一部分下载任务,因此,整体的文件下载速度提高了。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本发明实施例所提供的文件下载装置及系统,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

另外,附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

本发明实施例所提供的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、 随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

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