CN106790525A - 一种文件下载方法及装置 - Google Patents

一种文件下载方法及装置 Download PDF

Info

Publication number
CN106790525A
CN106790525A CN201611183737.7A CN201611183737A CN106790525A CN 106790525 A CN106790525 A CN 106790525A CN 201611183737 A CN201611183737 A CN 201611183737A CN 106790525 A CN106790525 A CN 106790525A
Authority
CN
China
Prior art keywords
download
file
thread
length
data
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.)
Pending
Application number
CN201611183737.7A
Other languages
English (en)
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.)
Guangdong Genius Technology Co Ltd
Original Assignee
Guangdong Genius Technology Co Ltd
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 Guangdong Genius Technology Co Ltd filed Critical Guangdong Genius Technology Co Ltd
Priority to CN201611183737.7A priority Critical patent/CN106790525A/zh
Publication of CN106790525A publication Critical patent/CN106790525A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明适用计算机技术领域,提供了一种文件下载方法及装置,所述方法包括:在接收到用户在应用程序中触发的对文件的下载请求时,可获取文件的长度,进而依据文件的长度和预设线程数计算文件的每个下载线程的数据长度和下载起止位置,从而在检测到线程池中存在空闲线程时,将文件的每个下载线程分配给空闲线程,依据每个下载线程的下载起止位置将应用程序对应的文件的每个下载线程的数据进行并行下载,实现了在移动终端设备中的多线程并行下载文件,有效提升了移动终端资源的利用率以及带宽的有效利用率,提高了下载速度,增强了用户体验。

Description

一种文件下载方法及装置
技术领域
本发明属于计算机技术领域,尤其涉及一种文件下载方法及装置。
背景技术
随着无线通信网络和互联网的快速发展,移动终端设备普及率越来越高,越来越多的用户通过移动终端设备从网络下载文件,文件是存储于储存设备上的一段数据流,文件的大小影响下载时间的长短,文件大,下载时间长。
应用程序(Application,缩写为App)是安装在移动终端设备中的第三方应用程序,用户通过应用程序享用互联网中的各种服务,随着用户对应用的需求增多,移动终端设备中同时运行的应用程序也增多,而现有技术中在应用程序中下载文件仅支持单线程下载,当用户有在移动终端设备中有多个下载文件的需求时,则依次下载,但会长期占用移动终端软硬件资源且资源利用率低,又使得带宽的有效利用率低,对用户而言需等待下载完成方能下一步操作,降低了用户体验。
发明内容
本发明的目的在于提供一种文件下载方法及装置,旨在解决由于现有技术中在移动终端设备中仅支持单线程下载文件,导致多文件下载时占用资源,资源利用率低、带宽利用率低且用户体验差的问题。
一方面,本发明提供了一种文件下载方法,所述方法包括下述步骤:
在接收到用户在应用程序中触发的对文件的下载请求时,由所述下载请求获取所述文件的长度;
依据所述文件的长度和预设线程数计算所述文件的每个下载线程的数据长度和下载起止位置,所述文件对应多个所述下载线程;
在检测到线程池中存在空闲线程时,将所述文件的每个下载线程分配给所述空闲线程,依据所述计算的每个下载线程的数据长度和下载起止位置将所述应用程序对应的文件的每个下载线程的数据进行并行下载。
另一方面,本发明提供了一种文件下载装置,所述装置包括:
获取单元,用于在接收到用户在应用程序中触发的对文件的下载请求时,由所述下载请求获取所述文件的长度;
计算单元,用于依据所述文件的长度和预设线程数计算所述文件的每个下载线程的数据长度和下载起止位置,所述文件对应多个所述下载线程;
下载单元,用于在检测到线程池中存在空闲线程时,将所述文件的每个下载线程分配给所述空闲线程,依据所述计算的每个下载线程的数据长度和下载起止位置将所述应用程序对应的文件的每个下载线程的数据进行并行下载。
在本发明实施例中,在接收到用户在应用程序中触发的对文件的下载请求时,可获取文件的长度,进而依据文件的长度和预设线程数计算文件的每个下载线程的数据长度和下载起止位置,从而在检测到线程池中存在空闲线程时,将文件的每个下载线程分配给空闲线程,依据每个下载线程的下载起止位置将应用程序对应的文件的每个下载线程的数据进行并行下载。
实现了在移动终端设备中多线程下载文件,在线程池中支持多个线程并行下载,支持多个不同应用程序的文件的并行下载,同一应用程序的多个不同文件的并行下载,还支持同一文件的分段多线程并行下载,从而有效提升了移动终端资源的利用率,提高了带宽的有效利用率,提高了下载速度,增强了用户体验。
附图说明
图1是本发明实施例一提供的文件下载方法的实现流程图;
图2是本发明实施例二提供的文件下载方法的程序流程图;
图3是本发明实施例三提供的文件下载方法的示意图;
图4是本发明实施例四提供的文件下载方法的实现流程图;
图5是本发明实施例五提供的文件下载装置的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例中的文件下载方法及装置可运行于移动终端设备中,其实,移动终端设备如智能手机、智能手表等。本发明实施例中的文件类型包括如文档、音视频、图像、应用程序等,还可以包括压缩包等,具体不受本发明实施例的限制。
以下结合具体实施例对本发明的具体实现进行详细描述:
实施例一:
图1示出了本发明实施例一提供的文件下载方法的实现流程,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
S101,在接收到用户在应用程序中触发的对文件的下载请求时,由下载请求获取文件的长度。
作为一种可选的实施方式,用户通过移动终端设备中的应用程序触发文件的下载,在接收到用户在应用程序中触发的对文件的下载请求时,从下载请求的头信息中获取文件的长度(getContentLength())。进一步的,下载请求还包括文件的统一资源定位符URL,即下载地址。
进一步可选的,下载请求还可以包括应用程序的应用标识,应用标识用于唯一标识移动终端设备中安装的应用程序。进一步的,下载请求还可以包括文件标识,文件标识用于唯一标识移动终端设备的应用程序中下载的文件。
进一步可选的,可在数据库中建立下载状态表,用于存储下载状态信息,表项内容可包括:_id(主键)、URL(下载链接)、taskId(线程标识,如文件的下载线程编号)、downloadLength(该线程已下载的长度)、downloadSuccess(该线程是否下载完成的标识)。
S102,依据文件的长度和预设线程数计算文件的每个下载线程的数据长度和下载起止位置,文件对应多个下载线程。
作为一种可选的实施方式,文件可对应多个下载线程,即将文件分段,每段对应一个下载线程进行下载。由步骤S101获取到文件的长度,而预设线程数为预先设置的一个文件对应的下载的线程的数量,具体实现中,预设线程数可以为预设定值,如3,即一个文件由3个线程下载,进一步的,预设线程数还可以根据文件的大小进行设置。
进一步可选的,若在检测到在文件的长度小于预设文件长度时,则预设线程数为预设定值。若在检测到文件的长度大于预设文件长度时,则预设线程数为文件的长度除以预设线程区块长度得到的数值。其中,预设文件长度为预先设置的文件长度,如50M等。预设线程区块长度为预先设置的一个线程的下载长度,如3000字节等。
作为一种可选的实施方式,步骤S102中依据文件的长度和预设线程数计算文件的每个下载线程的数据长度和下载起止位置具体包括:
将文件的长度除以预设线程数,得到文件的每个下载线程的数据长度;
由文件的每个下载线程的数据长度计算文件的每个线程的下载开始字节位置和下载结束字节位置;下载起止位置包括:下载开始字节位置和下载结束字节位置。
具体实现中,通过设置Http的Range头字段指定每个下载线程的下载起止位置,具体的,即每个下载线程从文件的什么位置开始下载,下载到什么位置为止,如文件1包括3个线程,文件1共3000字节,每个线程下载1000字节,则文件1的下载线程1在http请求头中设置为:“Range:bytes=0-999”,文件1的下载线程2在http请求头中设置为:“Range:bytes=1000-2000”,文件1的下载线程3在http请求头中设置为:“Range:bytes=2001-3000”。
S103,在检测到线程池中存在空闲线程时,将文件的每个下载线程分配给空闲线程,依据计算的每个下载线程的数据长度和下载起止位置将应用程序对应的文件的每个下载线程的数据进行并行下载。
作为一种可选的实施方式,线程池中包括多个线程可供下载。若该文件的下载请求为首次请求,则在下载列表中检测到该文件的URL不存在,则在检测到线程池中存在空闲线程时将文件的每个下载线程分配给空闲线程,进而进行并行下载。若该文件的下载请求不是首次请求,则在下载列表中检测到该文件的URL存在,则计算已下载的数据长度,并根据已下载的数据长度更新下载线程的起止位置。
具体实现中,可在本地创建文件,用于下载文件,并设置该创建的文件的大小,本地创建的文件的大小与待下载的文件的长度相同。
具体的,依据计算的每个下载线程的数据长度和下载起止位置将应用程序对应的文件的每个下载线程的数据进行并行下载具体包括:
依据文件的每个下载线程的下载起止位置将文件的每个下载线程的数据并行写入存储区。
具体实现中,可通过RandomAccessFile类指定每个线程从存储区的具体位置开始写入数据,具体如下载网络文件的指定起止位置到本地文件的起止位置通过RandomAccessFile类实现,该类可通过seek方法指定输入流写入的位置。其中,存储区包括移动终端设备本身的存储空间、存储卡等。
作为一种可选的实施方式,本发明实施例中支持多线程并行下载,其中,多线程不局限于一个文件的多线程下载,还支持多个文件多线程下载,还支持来自不同应用程序的多个文件的多线程下载。
进一步可选的,下载完成后,在下载状态表中更新各个线程对应的表项内容,如将downloadSuccess标识为已完成。
在本发明实施例中,在接收到用户在应用程序中触发的对文件的下载请求时,可获取文件的长度,进而依据文件的长度和预设线程数计算文件的每个下载线程的数据长度和下载起止位置,从而在检测到线程池中存在空闲线程时,将文件的每个下载线程分配给空闲线程,依据计算的每个下载线程的数据长度和下载起止位置将应用程序对应的文件的每个下载线程的数据进行并行下载。
实现了在移动终端设备中多线程下载文件,在线程池中支持多个线程并行下载,支持多个不同应用程序的文件的并行下载,同一应用程序的多个不同文件的并行下载,还支持同一文件的分段多线程并行下载,从而有效提升了移动终端资源的利用率,提高了带宽的有效利用率,提高了下载速度,增强了用户体验。
实施例二:
图2示出了本发明实施例二提供的文件下载方法的程序流程图,为一个文件进入下载时的程序流程图,包括步骤S201~S209,详述如下:
S201,接收用户在应用程序中触发的对文件的下载请求。下载请求包括文件的URL。
S202,获取文件的长度并计算文件的每个下载线程的下载起止位置。
S203,判断文件的URL是否在下载列表中。若是,执行步骤S204,若否,执行步骤S205。
S204,将每个下载线程的下载起止位置加上各线程已下载的数据长度。
S205,判断线程池中是否存在空闲线程。若是,执行步骤S207,若否执行步骤S206。
S206,进入下载线程等待序列。
S207,将文件的每个下载线程分配给空闲线程,并进行并行下载。
S208,每个下载线程下载完成后,更新该下载线程的状态。
S209,检测到该文件的所有线程下载结束后,删除该文件的URL。
具体实现中,在接收到用户触发的下载请求后,从请求头中获取到文件的长度以及文件的URL,进而根据文件的长度和预设线程数计算文件的每个下载线程的数据长度,具体可将文件的长度除以预设线程数,得到文件的每个下载线程的数据长度。进而由文件的每个下载线程的数据长度计算文件的每个线程的下载开始字节位置和下载结束字节位置。
若检测到文件的URL在下载列表中,则需更新对应线程的下载起止位置,具体的,将步骤S202中计算得到的线程的下载起止位置加上对应线程已经下载的数据长度,进而得到更新的线程的下载起止位置。若URL不在下载列表中,则直接进行步骤S205。
在检测到线程池中不存在空闲线程时,则将文件对应的下载线程进入下载线程等待序列,返回不在S206。
在检测到线程池中存在空闲线程时,则将文件的每个下载线程分配给空闲线程,进行并行下载。当每个下载线程下载完成后,在下载状态表中更新各个线程对应的表项内容,如将downloadSuccess标识为已完成。
在检测到该文件的所有线程下载结束后,删除该文件的URL,具体将已全部下载完成的URL从下载列表中删除。
本发明实施例提供的文件下载方法,可对已下载的线程片段进行自动叠加,避免重复下载浪费资源,同时支持多线程并行下载,多线程不局限于一个文件的多线程下载,还支持多个文件多线程下载,从而有效提升了移动终端资源的利用率,提高了带宽的有效利用率,提高了下载速度,增强了用户体验。
实施例三:
图3示出了本发明实施例三提供的文件下载方法的示意图,其中,(a)为一个应用对应多个文件的下载方法示意图,(b)为多个应用对应的文件下载方法示意图。
如图3(a)所示,用户在应用中下载4个文件,假如文件1、2、3、4是先后触发的下载请求,每个文件分为3个线程,设定此时线程池中最多允许并行下载10个线程,则文件1、文件2、文件3的全部线程可进入下载,文件4的线程1进入下载,文件4的线程2和文件4的线程3进入等待序列,待有空闲线程时再进入下载。
具体文件如何分为3个线程的方法参见实施例1中详述,在此不重复。对于一个文件分为多线程下载,可大大提升了下载速度,使得移动终端设备的资源得以充分利用。而对用户可见的下载进度可显示为一个文件的进度,一个文件的各个线程的下载进度可对用户隐藏。
如图3(b)所示,用户在应用1中下载文件1,在应用2中下载文件2和文件3,在应用3中下载文件4,假如文件1、2、3、4是先后触发的下载请求,每个文件分为3个线程,设定此时线程池中最多允许并行下载10个线程,则文件1、文件2、文件3的全部线程可进入下载,文件4的线程1进入下载,文件4的线程2和文件4的线程3进入等待序列,待有空闲线程时再进入下载。
具体文件如何分为3个线程的方法参见实施例1中详述,在此不重复。下载请求中可包括应用程序的应用标识、文件的文件标识、URL等,同时还可对文件的每个线程进行编号,得到每个文件的线程标识,对于一个移动终端设备中可同时下载来自不同应用程序的文件,对具体的每一个文件又可以分为多线程下载,可大大提升下载速度,使得设备的资源得以充分利用。
实施例四:
图4示出了本发明实施例四提供的文件下载方法的实现流程图,包括步骤S401~S409,详述如下:
S401,接收到多个下载请求,为用户在多个应用程序中触发的对应用标识对应的文件的下载请求。
作为一种可选的实施方式,可以理解为同时收到多个下载请求,或者在极短的时间内收到多个下载请求。具体的,用户在多个应用程序中触发的对文件的下载请求,即应用标识对应的文件的下载请求。具体实现中,下载请求中包括应用程序的应用标识,进一步的,还包括文件的URL。更进一步的,还可以包括文件的文件标识。
S402,获取各个应用标识对应的文件的长度。
作为一种可选的实施方式,计算每个应用标识对应的文件的长度。具体可从下载请求的头信息中获取文件的长度。一个应用标识可以对应至少一个文件。
S403,计算各个应用标识对应的各个下载线程的下载起止位置。
作为一种可选的实施方式,计算每个应用标识对应的各个文件的各个下载线程的下载起止位置,具体的,将文件的长度除以预设线程数,得到文件的每个下载线程的数据长度;或者由文件的每个下载线程的数据长度计算文件的每个线程的下载开始字节位置和下载结束字节位置。其中,若在检测到在文件的长度小于预设文件长度时,则预设线程数为预设定值。若在检测到文件的长度大于预设文件长度时,则预设线程数为文件的长度除以预设线程区块长度得到的数值。
S404,判断线程池中是否存在空闲线程。若是,执行步骤S406,若否执行步骤S405。
S405,进入下载线程等待序列。
S406,计算空闲线程的数量和应用标识对应的下载线程的数量。
作为一种可选的实施方式,计算空闲线程的数量,进一步的,计算应用标识对应的下载线程的数量,如图3(b)所示,则应用1的下载线程的数量为3,应用2的下载线程的数量为6,应用3的下载线程的数量为3。
S407,判断应用标识对应的下载线程的数量与空闲线程的数量的差值是否大于0,若是执行步骤S409,若否执行步骤S408。
作为一种可选的实施方式,计算应用标识对应的下载线程的数量与空闲线程的数量的差值,并判断该差值是否大于0。即判断线程池中能否满足多个应用的多线程下载请求。
S408,将应用标识对应的全部下载线程的数据进行并行下载。
作为一种可选的实施方式,在步骤S407中的判断结果为否时,即应用标识对应的下载线程的数量与空闲线程的数量的差值不大于0,即应用标识对应的下载线程的数量小于或等于空闲线程的数量时,应用标识对应的全部下载线程的数据可进行并行下载。
S409,依据应用标识对应的文件优先级将应用标识对应的文件的下载线程分配给空闲线程并进行并行下载。
作为一种可选的实施方式,在步骤S407中的判断结果为是时,即应用标识对应的下载线程的数量与空闲线程的数量的差值大于0,即应用标识对应的下载线程的数大于空闲线程的数量时,依据应用标识对应的文件优先级将应用标识对应的文件的下载线程分配给空闲线程并进行并行下载。
其中,不同的应用标识可对应不同的文件优先级,在线程有限情况下,优先满足优先级高的文件的下载。具体的,如可根据文件的长度来设定优先级γ,文件长度(ρl)越大优先级越小,文件长度越小优先级越高,γ=1/ρl。进一步的,还可以根据应用的优先级来设定文件的下载优先级,应用的优先级高则文件的下载优先级也高,应用的优先级低则文件的下载优先级也低。进一步的,还可采用先来先服务(First-come-First-Service,FCFS)的方式进行处理,下载请求的触发时间越早优先级越高,γ=ρt。进一步的,还可以根据文件的类型设定文件的下载优先级,如设置优先级由高到低分别为:文档—应用程序—音视频,则依据文档类型的优先级进行文件的下载,文档类型的优先级高的优先下载,文档类型的优先级低的其下载优先级也低。
本发明实施例提供文件的下载方法,实现了多个下载请求情况下的并行下载,支持多个应用的多个文件的多线程下载。当出现空闲线程数量不够时,而文件的下载需求多时,可根据应用标识对应的文件优先级进行并行下载。多线程不局限于一个文件的多线程下载,还支持多个文件多线程下载,支持多个应用中的多文件多线程下载,从而有效提升了移动终端资源的利用率,提高了带宽的有效利用率,提高了下载速度,增强了用户体验。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。
实施例五:
图5示出了本发明实施例五提供的文件下载装置的结构,为了便于说明,仅示出了与本发明实施例相关的部分,其中,本发明实施例提供的装置可包括:获取单元51、计算单元52以及下载单元53。
获取单元51,用于在接收到用户在应用程序中触发的对文件的下载请求时,由下载请求获取文件的长度。
作为一种可选的实施方式,获取单元51在接收到用户在应用程序中出发的对文件的下载请求时,从下载请求的头信息中获取文件的长度(getContentLength())。进一步的,下载请求还包括文件的URL,即下载地址。
进一步可选的,下载请求还可以包括应用程序的应用标识,应用标识用于唯一标识移动终端设备中安装的应用程序。进一步的,下载请求还可以包括文件标识,文件标识用于唯一标识移动终端设备的应用程序中下载的文件。
计算单元52,用于依据获取单元51中获取的文件的长度和预设线程数计算文件的每个下载线程的数据长度和下载起止位置,文件对应多个下载线程。
作为一种可选的实施方式,文件可对应多个下载线程,即将文件分段,每段对应一个下载线程进行下载。进一步可选的,文件的长度小于预设文件长度时,预设线程数为预设定值;文件的长度大于预设文件长度时,预设线程数为文件的长度除以预设线程区块长度得到的数值。
下载单元53,用于在检测到线程池中存在空闲线程时,将文件的每个下载线程分配给空闲线程,依据计算单元52计算的每个下载线程的数据长度和下载起止位置将应用程序对应的文件的每个下载线程的数据进行并行下载。
进一步可选的,计算单元52还可以包括:长度计算子单元和位置计算子单元,其中:
长度计算子单元,用于将文件的长度除以预设线程数,得到文件的每个下载线程的数据长度;
位置计算子单元,用于由文件的每个下载线程的数据长度计算文件的每个线程的下载开始字节位置和下载结束字节位置;下载起止位置包括:下载开始字节位置和下载结束字节位置;
进一步的,下载单元53具体用于:依据文件的每个下载线程的下载起止位置将文件的每个下载线程的数据并行写入存储区。
进一步可选的,计算单元52具体用于:在检测到文件的URL在下载列表中时,获取文件已下载的数据大小,并根据获取的所述文件已下载的数据的大小更新文件的每个线程的下载起止位置。其中,下载请求包括文件的统一资源定位符URL。
进一步可选的,下载请求包括应用程序的应用标识;下载请求为多个,且为用户在多个应用程序中触发的对应用标识对应的文件的下载请求时,计算单元52还可以包括:线程数量计算子单元。其中:
线程数量计算子单元,用于计算应用标识对应的下载线程的数量;
线程数量计算子单元,还用于计算空闲线程的数量;
进一步的,下载单元53包括:第一下载子单元和第二下载子单元。
第一下载子单元,用于在应用标识对应的文件的下载线程的数量小于或等于空闲线程的数量时,将应用标识对应的全部下载线程的数据进行并行下载;
第二下载子单元,用于在应用标识对应的文件的下载线程的数量大于空闲线程的数量时,依据应用标识对应的文件优先级将应用标识对应的文件的下载线程分配给空闲线程并进行并行下载。
进一步的,获取单元51、计算单元52以及下载单元53的执行细节可参见实施例一,分别对应实施例一中步骤S101、步骤S102、步骤S103的执行模块,在此不重复。
在本发明实施例提供一种文件下载装置,获取单元在接收到用户在应用程序中触发的对文件的下载请求时,可获取文件的长度,进而计算单元依据文件的长度和预设线程数计算文件的每个下载线程的数据长度和下载起止位置,从而下载单元在检测到线程池中存在空闲线程时,将文件的每个下载线程分配给空闲线程,依据计算的每个下载线程的数据长度和下载起止位置将应用程序对应的文件的每个下载线程的数据进行并行下载。
本发明实施例中,在线程池中支持多个线程并行下载,支持多个不同应用程序的文件的并行下载,同一应用程序的多个不同文件的并行下载,还支持同一文件的分段多线程并行下载,从而有效提升了移动终端资源的利用率,提高了带宽的有效利用率,提高了下载速度,增强了用户体验。
本发明实施例还公开了一种移动终端,包括图5所示的装置,该装置的结构和功能可参见图5所示实施例的相关描述,在此不赘述。在移动终端本端进行文件下载请求的输入、文件下载的处理和文件的存储。需要说明的是,本实施例提供的移动终端与图1~图4所示的文件下载方法相对应,为基于图1~图4所示的文件下载方法的执行主体。
本发明实施例还公开了一种文件下载系统,可包括移动终端设备和服务器。进一步的,文件的下载来源可来自于服务器,具体的,文件的来源可来自于文件内容对应的后台服务器、云服务器等。文件下载可存储于移动终端设备本地,也可以移动终端设备的存储卡中等,具体不受本发明实施例的限制。
用户通过在移动终端设备中触发文件的下载,用户通过移动终端中的屏幕、键盘等输入下载请求,进而在移动终端设备中运行本发明实施例提供的文件下载方法的程序,从而可对文件的下载请求进行处理,获取文件的长度,计算文件的各线程下载数据长度、下载起止位置,对多个线程进行并行下载,将下载的数据流写入移动终端设备的存储区中。
在本发明实施例中,文件下载装置的各单元可由相应的硬件或软件单元实现,各单元可以为独立的软、硬件单元,也可以集成为一个软、硬件单元,在此不用以限制本发明。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种文件下载方法,其特征在于,所述方法包括下述步骤:
在接收到用户在应用程序中触发的对文件的下载请求时,由所述下载请求获取所述文件的长度;
依据所述文件的长度和预设线程数计算所述文件的每个下载线程的数据长度和下载起止位置,所述文件对应多个所述下载线程;
在检测到线程池中存在空闲线程时,将所述文件的每个下载线程分配给所述空闲线程,依据所述计算的每个下载线程的数据长度和下载起止位置将所述应用程序对应的文件的每个下载线程的数据进行并行下载。
2.如权利要求1所述的方法,其特征在于,所述依据所述文件的长度和预设线程数计算所述文件的每个下载线程的数据长度和下载起止位置具体包括:
将所述文件的长度除以所述预设线程数,得到所述文件的每个下载线程的数据长度;
由所述文件的每个下载线程的数据长度计算所述文件的每个线程的下载开始字节位置和下载结束字节位置;所述下载起止位置包括:所述下载开始字节位置和所述下载结束字节位置;
所述依据所述计算的每个下载线程的数据长度和下载起止位置将所述应用程序对应的文件的每个下载线程的数据进行并行下载具体包括:
依据所述文件的每个下载线程的下载起止位置并行将所述文件的每个下载线程的数据写入存储区。
3.如权利要求1或2所述的方法,其特征在于,所述下载请求包括所述文件的统一资源定位符URL;
所述依据所述文件的长度和预设线程数计算所述文件的每个下载线程的数据长度和下载起止位置具体包括:
若检测到所述文件的URL在下载列表中,获取所述文件已下载的数据大小,并根据所述获取的所述文件已下载的数据的大小更新所述文件的每个线程的下载起止位置。
4.如权利要求2所述的方法,其特征在于,在所述文件的长度小于预设文件长度时,所述预设线程数为预设定值;在所述文件的长度大于预设文件长度时,所述预设线程数为所述文件的长度除以预设线程区块长度得到的数值。
5.如权利要求1所述的方法,其特征在于,所述下载请求包括所述应用程序的应用标识;所述下载请求为多个,且为用户在多个应用程序中触发的对应用标识对应的文件的下载请求时,所述文件的每个下载线程分配给所述空闲线程之前,所述方法还包括:
计算所述应用标识对应的下载线程的数量;
计算所述空闲线程的数量;
所述在检测到线程池中存在空闲线程时,将所述文件的每个下载线程分配给所述空闲线程,依据所述计算的每个下载线程的数据长度和下载起止位置将所述应用程序对应的文件的每个下载线程的数据进行并行下载,包括:
在所述应用标识对应的下载线程的数量小于或等于所述空闲线程的数量时,将所述应用标识对应的全部下载线程的数据进行并行下载;
在所述应用标识对应的下载线程的数量大于所述空闲线程的数量时,依据所述应用标识对应的文件优先级将所述应用标识对应的文件的下载线程分配给所述空闲线程并进行并行下载。
6.一种文件下载装置,其特征在于,所述装置包括:
获取单元,用于在接收到用户在应用程序中触发的对文件的下载请求时,由所述下载请求获取所述文件的长度;
计算单元,用于依据所述文件的长度和预设线程数计算所述文件的每个下载线程的数据长度和下载起止位置,所述文件对应多个所述下载线程;
下载单元,用于在检测到线程池中存在空闲线程时,将所述文件的每个下载线程分配给所述空闲线程,依据所述计算的每个下载线程的数据长度和下载起止位置将所述应用程序对应的文件的每个下载线程的数据进行并行下载。
7.如权利要求1所述的装置,其特征在于,所述计算单元包括:
长度计算子单元,用于将所述文件的长度除以所述预设线程数,得到所述文件的每个下载线程的数据长度;
位置计算子单元,用于由所述文件的每个下载线程的数据长度计算所述文件的每个线程的下载开始字节位置和下载结束字节位置;所述下载起止位置包括:所述下载开始字节位置和所述下载结束字节位置;
所述下载单元具体用于:依据所述文件的每个下载线程的下载起止位置并行将所述文件的每个下载线程的数据写入存储区。
8.如权利要求6或7所述的装置,其特征在于,所述下载请求包括所述文件的统一资源定位符URL;
所述计算单元具体用于:在检测到所述文件的URL在下载列表中时,获取所述文件已下载的数据大小,并根据所述获取的所述文件已下载的数据的大小更新所述文件的每个线程的下载起止位置。
9.如权利要求7所述的装置,其特征在于,在所述文件的长度小于预设文件长度时,所述预设线程数为预设定值;在所述文件的长度大于预设文件长度时,所述预设线程数为所述文件的长度除以预设线程区块长度得到的数值。
10.如权利要求6所述的装置,其特征在于,所述下载请求包括所述应用程序的应用标识;所述下载请求为多个,且为用户在多个应用程序中触发的对应用标识对应的文件的下载请求时,所述计算单元包括:
线程数量计算子单元,用于计算所述应用标识对应的下载线程的数量;
所述线程数量计算子单元,还用于计算所述空闲线程的数量;
所述下载单元包括:
第一下载子单元,用于在所述应用标识对应的下载线程的数量小于或等于所述空闲线程的数量时,将所述应用标识对应的全部下载线程的数据进行并行下载;
第二下载子单元,用于在所述应用标识对应的下载线程的数量大于所述空闲线程的数量时,依据所述应用标识对应的文件优先级将所述应用标识对应的文件的下载线程分配给所述空闲线程并进行并行下载。
CN201611183737.7A 2016-12-20 2016-12-20 一种文件下载方法及装置 Pending CN106790525A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611183737.7A CN106790525A (zh) 2016-12-20 2016-12-20 一种文件下载方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611183737.7A CN106790525A (zh) 2016-12-20 2016-12-20 一种文件下载方法及装置

Publications (1)

Publication Number Publication Date
CN106790525A true CN106790525A (zh) 2017-05-31

Family

ID=58895793

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611183737.7A Pending CN106790525A (zh) 2016-12-20 2016-12-20 一种文件下载方法及装置

Country Status (1)

Country Link
CN (1) CN106790525A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107484040A (zh) * 2017-08-29 2017-12-15 四川长虹电器股份有限公司 一种实现网络加速的方法
CN107741922A (zh) * 2017-10-18 2018-02-27 山东浪潮通软信息科技有限公司 一种运算公式处理方法和装置
CN109189483A (zh) * 2018-08-02 2019-01-11 优视科技新加坡有限公司 任务执行的调控方法、装置、设备/终端/服务器及存储介质
CN109309725A (zh) * 2018-10-25 2019-02-05 深圳市腾讯信息技术有限公司 应用下载和更新方法、装置、计算机设备及存储介质
WO2019037398A1 (zh) * 2017-08-21 2019-02-28 深圳创维-Rgb电子有限公司 一种应用程序的下载管理方法、存储介质及智能设备
CN110300189A (zh) * 2019-07-25 2019-10-01 北京达佳互联信息技术有限公司 一种资源下载方法、装置及电子设备
CN110333947A (zh) * 2019-05-23 2019-10-15 深圳市腾讯网域计算机网络有限公司 一种游戏应用的分包资源加载方法、装置、设备及介质
CN111324458A (zh) * 2020-02-18 2020-06-23 山东汇贸电子口岸有限公司 一种基于Java的大文件下载加速方法
CN112637351A (zh) * 2020-12-25 2021-04-09 珠海金山网络游戏科技有限公司 一种文件下载方法及装置
CN117118970A (zh) * 2023-04-23 2023-11-24 荣耀终端有限公司 文件的下载方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101478563A (zh) * 2008-11-25 2009-07-08 北大方正集团有限公司 一种流媒体格式文档下载方法及装置
CN103227812A (zh) * 2013-03-19 2013-07-31 青岛海信宽带多媒体技术有限公司 智能设备中支持断点续传的下载方法和装置
CN103581269A (zh) * 2012-08-07 2014-02-12 百度在线网络技术(北京)有限公司 云端离线下载方法、系统及其装置
CN104519090A (zh) * 2013-09-27 2015-04-15 深圳市腾讯计算机系统有限公司 文件传输方法及装置
CN105450551A (zh) * 2015-12-07 2016-03-30 贵阳朗玛信息技术股份有限公司 一种下载直播流的方法及下载服务器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101478563A (zh) * 2008-11-25 2009-07-08 北大方正集团有限公司 一种流媒体格式文档下载方法及装置
CN103581269A (zh) * 2012-08-07 2014-02-12 百度在线网络技术(北京)有限公司 云端离线下载方法、系统及其装置
CN103227812A (zh) * 2013-03-19 2013-07-31 青岛海信宽带多媒体技术有限公司 智能设备中支持断点续传的下载方法和装置
CN104519090A (zh) * 2013-09-27 2015-04-15 深圳市腾讯计算机系统有限公司 文件传输方法及装置
CN105450551A (zh) * 2015-12-07 2016-03-30 贵阳朗玛信息技术股份有限公司 一种下载直播流的方法及下载服务器

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019037398A1 (zh) * 2017-08-21 2019-02-28 深圳创维-Rgb电子有限公司 一种应用程序的下载管理方法、存储介质及智能设备
CN107484040A (zh) * 2017-08-29 2017-12-15 四川长虹电器股份有限公司 一种实现网络加速的方法
CN107741922A (zh) * 2017-10-18 2018-02-27 山东浪潮通软信息科技有限公司 一种运算公式处理方法和装置
WO2020026010A3 (zh) * 2018-08-02 2020-03-05 优视科技新加坡有限公司 任务执行的调控方法、装置、设备/终端/服务器及存储介质
CN109189483A (zh) * 2018-08-02 2019-01-11 优视科技新加坡有限公司 任务执行的调控方法、装置、设备/终端/服务器及存储介质
CN109309725A (zh) * 2018-10-25 2019-02-05 深圳市腾讯信息技术有限公司 应用下载和更新方法、装置、计算机设备及存储介质
CN109309725B (zh) * 2018-10-25 2021-10-08 深圳市腾讯信息技术有限公司 应用下载和更新方法、装置、计算机设备及存储介质
CN110333947A (zh) * 2019-05-23 2019-10-15 深圳市腾讯网域计算机网络有限公司 一种游戏应用的分包资源加载方法、装置、设备及介质
CN110333947B (zh) * 2019-05-23 2023-06-16 深圳市腾讯网域计算机网络有限公司 一种游戏应用的分包资源加载方法、装置、设备及介质
CN110300189A (zh) * 2019-07-25 2019-10-01 北京达佳互联信息技术有限公司 一种资源下载方法、装置及电子设备
CN111324458A (zh) * 2020-02-18 2020-06-23 山东汇贸电子口岸有限公司 一种基于Java的大文件下载加速方法
CN112637351A (zh) * 2020-12-25 2021-04-09 珠海金山网络游戏科技有限公司 一种文件下载方法及装置
CN112637351B (zh) * 2020-12-25 2023-09-05 珠海金山数字网络科技有限公司 一种文件下载方法及装置
CN117118970A (zh) * 2023-04-23 2023-11-24 荣耀终端有限公司 文件的下载方法及装置

Similar Documents

Publication Publication Date Title
CN106790525A (zh) 一种文件下载方法及装置
US20200192707A1 (en) Performance-based hardware emulation in an on-demand network code execution system
CN107241281B (zh) 一种数据处理方法及其装置
CN109542614B (zh) 资源配置方法、装置、终端及存储介质
EP3404538B1 (en) Data processing method, and data processing apparatus
CN110221901A (zh) 容器资源创建方法、装置、设备及计算机可读存储介质
CN105589783A (zh) 应用程序卡顿问题数据获取方法及装置
CN112988362B (zh) 一种任务处理方法、装置、电子设备及存储介质
CN110888658B (zh) 应用程序中功能模块的动态化方法、装置及存储介质
CN103365644A (zh) 一种扩展软件功能的方法及装置
CN105786839A (zh) 一种应用数据获取方法及装置
CN106569917B (zh) 一种数据备份方法及移动移动终端
CN104965914A (zh) 一种页面显示方法及装置
CN111435354A (zh) 数据导出方法、装置、存储介质及电子设备
CN106657182B (zh) 云端文件处理方法和装置
CN103593233A (zh) 推送软件信息的方法和系统
CN110222046B (zh) 列表数据的处理方法、装置、服务器和存储介质
CN108234551B (zh) 一种数据处理方法及装置
CN111294377A (zh) 一种依赖关系的网络请求发送方法、终端装置及存储介质
CN112214325A (zh) Fpga任务动态编排方法、装置、芯片和存储介质
EP3748493B1 (en) Method and device for downloading installation-free application
CN113254106B (zh) 基于Flink的任务执行方法、装置、计算机设备及存储介质
CN102053917B (zh) 一种降低内存占用的智能卡及其处理指令的方法
CN107092601B (zh) 资源文件构建方法、资源文件应用方法及装置
CN110688223B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20170531

RJ01 Rejection of invention patent application after publication