CN112751899A - 文件下载方法、装置、存储介质及电子设备 - Google Patents
文件下载方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN112751899A CN112751899A CN201911051239.0A CN201911051239A CN112751899A CN 112751899 A CN112751899 A CN 112751899A CN 201911051239 A CN201911051239 A CN 201911051239A CN 112751899 A CN112751899 A CN 112751899A
- Authority
- CN
- China
- Prior art keywords
- file
- downloaded
- downloading
- task
- download
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000001514 detection method Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 abstract description 20
- 230000008569 process Effects 0.000 abstract description 10
- 238000005516 engineering process Methods 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 8
- 230000002159 abnormal effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000009434 installation Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 244000035744 Hura crepitans Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了一种文件下载方法、装置、存储介质及电子设备,涉及数据传输技术。具体方案包括:获取待下载文件的下载地址、存储地址和第一文件名称;根据第一文件名称和存储地址,判断存储地址是否已经存在待下载文件,并在存在待下载文件时,根据已经存在的待下载文件确定已下载的字节数;判断任务池中是否已经存在待下载文件的下载任务,当存在下载任务时,根据已下载的字节数确定下载任务的开始字节位置;根据开始字节位置和下载地址生成下载请求,继续下载待下载文件。本申请无需保存中断点信息,提高文件下载中断点续传的实现效率,并且可以避免文件下载过程中由于中断点信息的丢失而出现的错误。
Description
技术领域
本申请涉及数据传输技术,特别是涉及一种文件下载方法、装置、存储介质及电子设备。
背景技术
在网络环境中,通过网络进行数据传输和文件下载非常普遍。例如,用户经常会通过网络下载文本文件、音频文件、视频文件或应用程序安装文件等,并且经常出现下载的文件数据量很大的情形。在实际应用中,由于人为原因、意外原因或故障原因,常会导致数据传输的中断。
现有技术中,常通过保存中断点的信息,在文件下载出现中断时,进行断点续传。然而,现有技术中的断点续传实现方式,需要考虑对中断点信息的保存方式,断点续传的实现效率较低,且中断点信息容易丢失,从而使文件下载过程出现错误。
发明内容
有鉴于此,本申请的主要目的在于提供一种文件下载方法,该方法无需保存中断点信息,提高文件下载中断点续传的实现效率,并且可以避免文件下载过程中由于中断点信息的丢失而出现的错误。
为了达到上述目的,本申请提出的技术方案为:
第一方面,本申请实施例提供了一种文件下载方法,包括以下步骤:
获取待下载文件的下载地址、存储地址和第一文件名称;
根据所述第一文件名称和所述存储地址,判断所述存储地址是否已经存在所述待下载文件,并在存在所述待下载文件时,根据已经存在的所述待下载文件确定已下载的字节数;
判断任务池中是否已经存在所述待下载文件的下载任务,当存在所述下载任务时,根据已下载的字节数确定所述下载任务的开始字节位置;
根据所述开始字节位置和所述下载地址生成下载请求,继续下载所述待下载文件。
一种可能的实施方式中,所述判断任务池中是否已经存在所述待下载文件的下载任务的步骤之后,所述方法还包括:
当不存在所述下载任务时,判断所述待下载文件是否下载完成;
当所述待下载文件未下载完成时,重新确定所述待下载文件的第二文件名称;
根据所述下载地址生成所述下载请求,并根据所述第二文件名称和所述存储地址,重新下载所述待下载文件。
一种可能的实施方式中,所述判断所述待下载文件是否下载完成的步骤,包括:
根据已下载的字节数和所述待下载文件的总字节数,确定所述待下载文件是否下载完成。
一种可能的实施方式中,所述重新确定所述待下载文件的第二文件名称的步骤,包括:
为所述待下载文件的第一文件名称增加字符后缀,生成所述第二文件名称。
一种可能的实施方式中,所述重新确定所述待下载文件的第二文件名称的步骤,包括:
为所述待下载文件的第一文件名称增加数字后缀,生成第三文件名称;
判断所述存储地址中是否存在文件名称与所述第三文件名称相同的文件;
当存在文件名称与所述第三文件名称相同的文件时,递增修改所述数字后缀,直至所述第三文件名称与存储地址中的每个文件的文件名称均不相同为止;
当所述第三文件名称与存储地址中的每个文件的文件名称均不相同时,将所述第三文件名称确定为所述第二文件名称。
一种可能的实施方式中,所述判断所述存储地址是否已经存在所述待下载文件的步骤之后,所述方法还包括:
当不存在所述待下载文件时,根据所述下载地址生成所述下载请求,并根据所述第一文件名称和所述存储地址,下载所述待下载文件。
一种可能的实施方式中,当不存在所述待下载文件时,所述根据所述下载地址生成所述下载请求的步骤之前,所述方法还包括:
新建所述下载任务,并将所述下载任务加入所述任务池。
一种可能的实施方式中,所述判断任务池中是否已经存在所述待下载文件的下载任务的步骤,包括:
确定所述下载任务的任务标识,判断所述任务池中是否包含有所述任务标识。
一种可能的实施方式中,所述确定所述下载任务的任务标识的步骤,包括:
根据所述下载地址,确定所述下载任务的任务标识。
一种可能的实施方式中,所述继续下载所述待下载文件的步骤之后,所述方法还包括:
当所述下载任务中断时,判断所述下载任务是否可被恢复;
如果所述下载任务不可被恢复,将所述下载任务从所述任务池中删除。
一种可能的实施方式中,当存在所述下载任务时,所述根据已下载的字节数确定所述下载任务的开始字节位置的步骤之前,所述方法还包括:
将所述下载任务加入任务列表中。
一种可能的实施方式中,所述继续下载所述待下载文件的步骤之后,所述方法还包括:
当所述下载任务中断时,将所述下载任务从任务列表中删除。
第二方面,本申请实施例还提供一种文件下载装置,包括:
获取模块,用于获取待下载文件的下载地址、存储地址和第一文件名称;
文件检测模块,用于根据所述第一文件名称和所述存储地址,判断所述存储地址是否已经存在所述待下载文件,并在存在所述待下载文件时,根据已经存在的所述待下载文件确定已下载的字节数,
任务管理模块,用于判断任务池中是否已经存在所述待下载文件的下载任务;
网络请求模块,用于当存在所述下载任务时,根据已下载的字节数确定所述下载任务的开始字节位置;还用于根据所述开始字节位置和所述下载地址生成下载请求;
数据写入模块,用于继续下载所述待下载文件。
第三方面,本申请实施例还提供一种计算机可读存储介质。具体方案为:
一种计算机可读存储介质,存储有计算机指令,所述指令被处理器执行时可实现上述第一方面及第一方面中任一种可能的实施方式的步骤。
第四方面,本申请实施例还提供一种电子设备。具体方案为:
一种电子设备,该电子设备包括上述的计算机可读存储介质,还包括可执行所述计算机可读存储介质的处理器。
综上所述,本申请提出的一种文件下载方法、装置、存储介质及电子设备。本申请无需存储中断点信息,而是在下载文件时,根据获取的第一文件名称和存储地址,判断存储地址是否已经存在待下载文件,也就是判断待下载文件是否已经被下载过,并且确定待下载文件已下载的字节数。如果确定待下载文件已经被下载过,根据已下载的字节数确定开始字节位置,并根据开始字节位置和下载地址生成下载请求,继续下载待下载文件。这样可以方便的对待下载文件进行断点续传,提高文件下载中断点续传的实现效率,并且可以避免文件下载过程中由于中断点信息的丢失而出现的错误。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种文件下载方法的流程示意图;
图2为本申请实施例提供的另一种文件下载方法的流程示意图;
图3为本申请实施例提供的一种文件下载装置的结构示意图;
图4为本申请实施例提供的装置中任务管理模块的示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
在网络环境中,通过网络进行数据传输和文件下载非常普遍。例如,用户经常会通过网络下载文本文件、音频文件、视频文件或应用程序安装文件等,并且经常出现下载的文件数据量很大的情形。在实际应用中,由于人为原因、意外原因或故障原因,常会导致数据传输的中断。
现有技术中,可以利用下载中断时保存的参数实现断点续传功能。具体的可以采用下述方法实现:
1、可以将在恢复下载时,获取下载中断时保存的中断点信息,例如中断点的参数信息,从而从上次中断的点继续进行下载。但这样的方式有明显的弊端,例如:人为关闭实现下载功能的应用程序,或者由于故障或网络等原因造成的实现下载功能的应用程序突然退出时,由于保存的参数信息从内存中被清除,从而造成中断点信息丢失。
2、另外在保存下载中断时的中断点信息的同时,很多应用程序将正在进行下载的待下载文件也作为临时下载数据一点点写入到临时存储中,例如,存储沙盒临时目录中,在下载结束后,再将完整的待下载文件移到永久存储中。然而,临时存储中的下载数据很有可能被误删除,将中断点信息和临时下载数据分开进行临时存储,会造成中断点信息存在而临时下载数据被清除,或者相反,临时下载数据存在而中断点信息被清除的异常情况。
3、如果进一步对中断点信息进行持久化存储,这种方式也需要保证中断点信息的数据和已经下载的待下载文件同时存在,实现起来效率低下,而且由于外界因素也会造成待下载文件或中断点信息的缺失。在待下载文件过大或者传输速率有较大限制时,更容易出问题。
示例性的,在苹果设备的iOS系统中,提供旧版iOS系统支持的NSURLConnection、新版iOS系统支持的替换方案NSURLSession或第三方框架AFNetworking进行文件下载,无论使用iOS系统中哪种方案进行文件下载,在实现断点续传时,均需要保存中断点信息,例如保存resumeData参数实现,区别仅在于使用临时存储保存还是持久化存储,是与临时下载数据一起保存还是分别保存。因此,均存在上述现有技术中的缺陷。
有鉴于此,本申请的核心发明点在于:无需存储中断点信息,而是在下载文件时,根据获取的第一文件名称和存储地址,判断存储地址是否已经存在待下载文件,也就是判断待下载文件是否已经被下载过,并且确定待下载文件已下载的字节数。如果确定待下载文件已经被下载过,根据已下载的字节数确定开始字节位置,并根据开始字节位置和下载地址生成下载请求,继续下载待下载文件。这样可以方便的对待下载文件进行断点续传,提高文件下载中断点续传的实现效率,并且可以避免文件下载过程中由于中断点信息的丢失而出现的错误。
进一步的,本申请在继续下载待下载文件前对下载任务进行验证,避免文件下载过程中由于待下载文件的损坏而出现错误。
为使本申请的目的、技术方案和优点更加清楚,下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
实施例一
图1为本申请实施例一提供的文件下载方法的流程示意图,如图1所示,该实施例主要包括:
S101:获取待下载文件的下载地址、存储地址和第一文件名称。
本申请实施例的执行主体可以为需要进行文件下载的客户端,也可以为给客户端提供文件下载服务的服务器。
待下载文件为本次需要下载的文件,可以为需要进行下载的文本文件、音频文件、视频文件、可执行文件或安装文件等任一种常见的文件类型。
在具体实施时,可以在获取到指示待下载文件开始下载的指令、消息或命令后,获取待下载文件的下载地址、存储地址和第一文件名称,具体的,从需要进行文件下载的客户端获取待下载文件的下载地址、存储地址和第一文件名称,待下载文件的下载地址、存储地址和第一文件名称可以携带在上述指令、消息或命令中,也可以单独获取。另外,当待下载文件的下载任务由于网络等原因中断时,还可以在网络恢复时,自动开始进行待下载文件的下载,无需获取指示待下载文件开始下载的指令、消息或命令,此时,可以按照上次获取待下载文件的下载地址、存储地址和第一文件名称的方式,再次获取待下载文件的下载地址、存储地址和第一文件名称;也可以获取存储的待下载文件的下载地址、存储地址和第一文件名称。
这里,第一文件名称为待下载文件的文件名称。下载地址为下载文件时请求的网络地址,例如,需下载的文件在网络端的统一资源定位符(Uniform Resource Locator,URL)。存储地址为待下载文件被下载到的实际存储待下载文件的本地地址,为下载任务指定或者默认的待下载文件的下载位置,例如,待下载文件在本地存储的文件夹地址。
S102:根据所述第一文件名称和所述存储地址,判断所述存储地址是否已经存在所述待下载文件,并在存在所述待下载文件时,根据已经存在的所述待下载文件确定已下载的字节数。
具体的,根据第一文件名称,判断存储地址中存储的文件中,是否包含待下载文件。当存在待下载文件时,对已经存在的待下载文件进行检测,确定存储地址中存在的待下载文件的字节数,存储地址中存在的待下载文件的字节数就是已下载的字节数。本申请实施例根据已下载的字节数确定下载终端的位置,不同于单独记录中断点信息,根据已下载的字节数确定下载终端的位置可以避免文件下载过程中由于中断点信息的丢失而出现的错误。
S103:判断任务池中是否已经存在所述待下载文件的下载任务,当存在所述下载任务时,根据已下载的字节数确定所述下载任务的开始字节位置。
利用对下载任务的验证,避免存储地址中存在的待下载文件的损坏。下载任务存储在任务池中,任务池中存储了每个未完成的下载任务,这里的下载任务的完成是指下载任务正常结束,待下载文件下载完成,将下载任务从任务池中删除;或者手动将下载任务从任务池中删除。
当任务池中存在上述待下载文件的下载任务时,说明待下载文件的下载任务没有完成,此时,直接继续进行下载任务。
S104:根据所述开始字节位置和所述下载地址生成下载请求,继续下载所述待下载文件。
为了从中断点开始继续下载待下载文件,在生成下载请求时,除了根据下载地址生成,还需要根据开始字节位置生成。这里,开始字节位置为继续下载待下载文件时,需要开始下载的字节在待下载文件中的位置。开始字节位置根据已下载的字节数可以直接确定;也可以根据已下载的字节数确定未下载的字节数,之后根据未下载的字节数确定;或者根据已下载的字节数和待下载文件的总字节数确定。
将携带了开始字节位置的下载请求发送到下载地址,向下载地址请求继续下载待下载文件,直至待下载文件下载完成。
实施例二
如图2所示,本申请实施例还提供一种文件下载方法,包括:
S201:获取待下载文件的下载地址、存储地址和第一文件名称。
待下载文件为本次需要下载的文件,可以为需要进行下载的文本文件、音频文件、视频文件、可执行文件或安装文件等任一种常见的文件类型。
在具体实施时,可以在获取到指示待下载文件开始下载的指令、消息或命令后,获取待下载文件的下载地址、存储地址和第一文件名称,具体的,从需要进行文件下载的客户端获取待下载文件的下载地址、存储地址和第一文件名称,待下载文件的下载地址、存储地址和第一文件名称可以携带在上述指令、消息或命令中,也可以单独获取。另外,当待下载文件的下载任务由于网络等原因中断时,还可以在网络恢复时,自动开始进行待下载文件的下载,无需获取指示待下载文件开始下载的指令、消息或命令,此时,可以按照上次获取待下载文件的下载地址、存储地址和第一文件名称的方式,再次获取待下载文件的下载地址、存储地址和第一文件名称;也可以获取存储的待下载文件的下载地址、存储地址和第一文件名称;还可以设置默认的下载地址、存储地址或第一文件名称。
S202:根据所述第一文件名称和所述存储地址,判断所述存储地址是否已经存在所述待下载文件。
根据第一文件名称确定存储地址中是否已经存储有待下载文件,根据存储地址是否已经存在所述待下载文件,确定待下载文件是一个全新的下载任务,还是已经下载了一部分后中断的下载任务。
当不存在待下载文件时,执行步骤S203;当存在待下载文件时,执行步骤S204。
S203:根据所述下载地址生成所述下载请求,并根据所述第一文件名称和所述存储地址,下载所述待下载文件。
当不存在待下载文件时,从零开始下载待下载文件。具体的,在存储地址以第一文件名称为文件名,新建待下载文件,并且向下载地址发出下载请求,从下载地址将待下载文件下载到存储地址。
为了进行下载任务的管理,在生成下载请求之前,需要新建下载任务,并将下载任务加入任务池中。任务池中的下载任务需要保证唯一性,因此,需要确定下载任务的任务标识,在加入任务池中之前,根据任务标识对下载任务进行唯一性校验。如果任务标识已经存在于任务池中,需要更换下载任务的任务标识。
S204:判断任务池中是否已经存在所述待下载文件的下载任务。
具体的,通过确定下载任务的任务标识,判断任务池中是否存在待下载文件的下载任务的任务标识,来判断任务池中是否已经存在待下载文件的下载任务。
这里,任务标识可以人为设定,例如,使用累加的数字作为下载任务的任务标识。在一种可能的实施方式中,由于不同的待下载文件的下载地址必然不同,因此,可以根据下载地址,确定下载任务的任务标识。具体例如,当下载地址为需下载的文件在网络端的URL地址时,可以使用上述URL地址的哈希值作为任务标识。使用URL地址的哈希值可以在保证任务标识的唯一性的同时,规范任务标识的表达形式,使任务标识具有统一的长度。进一步的,可以保证下载任务与待下载文件真正意义上的对应关系,从而利用下载任务是否存在,对待下载文件是否被损坏进行验证。
如果任务池中存在待下载文件的下载任务,可以直接调用该下载任务继续对待下载文件进行下载,执行步骤S205;如果任务池中不存在待下载文件的下载任务,调用下载任务失败,执行步骤S207。
S205:当存在所述下载任务时,根据已下载的字节数确定所述下载任务的开始字节位置。
开始字节位置为待下载文件上一次下载时中断的字节位置,下载任务的开始字节位置可以根据已下载的字节数确定。
S206:根据所述开始字节位置和所述下载地址生成下载请求,继续下载所述待下载文件。
生成的下载请求中携带了开始字节位置,可以使网络端服务器获知此次下载是从哪个字节开始的。具体例如,可以根据开始字节位置和下载地址生成HTTP请求,并将HTTP请求发送至网络端服务器,从而从开始字节位置开始对待下载文件进行下载。并且,下载得到的数据继续存储在存储地址中已经存在的待下载文件中,从而实现对待下载文件的断点续传。
S207:判断所述待下载文件是否下载完成。
如果任务池中没有待下载文件的下载任务,此时可能有两种情况。第一种情况时,待下载文件已经下载完成,此时,由于待下载文件下载完成,下载任务从任务池中被删除。由于待下载文件已经下载完成,此时可以退出下载任务;或者重新确定一个与待下载文件的第一文件名称不重复的第二文件名称,使用第二文件名称,重新下载待下载文件;或者弹出提示,让用户确定是否重新下载待下载文件。
如果待下载文件没有下载完成,并且不存在下载任务,证明下载任务丢失或待下载文件损坏;或者,当下载任务的任务标识根据下载地址确定时,证明存储地址存储的待下载文件与本次需下载的待下载文件从不同的下载地址下载。此时,执行步骤S208。
这里,可以根据已下载的字节数确定待下载文件是否下载完成。具体的,根据已下载的字节数和所述待下载文件的总字节数,确定所述待下载文件是否下载完成。当已下载字节数等于待下载文件的总字节数时,待下载文件下载完成;当已下载字节数小于待下载文件的总字节数时,待下载文件并未下载完成。
S208:重新确定所述待下载文件的第二文件名称,并根据所述第二文件名称和所述存储地址,重新下载所述待下载文件。
具体的,需要重新确定待下载文件的第二文件名称,并且根据所述下载地址生成所述下载请求,并根据所述第二文件名称和所述存储地址,重新下载所述待下载文件。此时重新下载待下载文件,需要自动确定一个与原来的待下载文件的第一文件名称不重复的第二文件名称。
示例性的,可以使用下述两种可能的实施方式对待下载文件进行重命名:
A、一种可能的实施方式中,为所述待下载文件的第一文件名称增加字符后缀,生成所述第二文件名称。具体例如,第一文件名称为XXX,第二文件名称可以为XXXa、XXX1、XXX[1]等。同一个存储地址中不能有相同的文件名称,因此第二文件名称不仅需要与第一文件名称不同,还需要与存储地址中的每个文件的文件名称均不同。因此,每次生成第二文件名称之后,需要检查是否与存储地址中的任一个文件的文件名称相同,如果存储地址中存在与第二文件名称相同的文件名称,可以在第二名称后再增加字符后缀,生成新的第二文件名称,直至与存储地址中每个文件的文件名称均不相同为止。
B、另一种可能的实施方式中,为所述待下载文件的第一文件名称增加数字后缀,生成第三文件名称;判断所述存储地址中是否存在文件名称与所述第三文件名称相同的文件;当存在文件名称与所述第三文件名称相同的文件时,递增修改所述数字后缀,直至所述第三文件名称与存储地址中的每个文件的文件名称均不相同为止;当所述第三文件名称与存储地址中的每个文件的文件名称均不相同时,将所述第三文件名称确定为所述第二文件名称。具体例如,第一文件名称为XXX,先生成第三文件名称为XXX1,如果第三文件名称与存储地址中每个文件的文件名称均不相同,则将XXX1确定为第二文件名称;如果存储地址中存在文件名称与所述第三文件名称相同的文件,则将第三文件名称修改为XXX2,继续判断存储地址中是否存在文件名称与所述第三文件名称相同的文件,如果存储地址中仍然存在文件名称与所述第三文件名称相同的文件,则将第三文件名称修改为XXX3,直至第三文件名称与存储地址中的每个文件的文件名称均不相同为止,当第三文件名称与存储地址中的每个文件的文件名称均不相同时,将所述第三文件名称确定为所述第二文件名称。
如无外界因素干扰,下载任务会一直进行下去,按照继续下载待下载文件、新建待下载文件后开始下载、或者重命名待下载文件后重新下载的方式下载待下载文件,直至待下载文件下载完成。
如果存在外界因素干扰,任务会进入暂停或中断状态。为了对暂停或中断状态的下载任务进行有区别的、清晰可控的管理,在任务池的基础上,设置了任务列表。
在待下载文件开始下载、重新下载或继续下载时,将任务池中该待下载文件对应的下载任务加入任务列表中。当暂停下载时,例如,用户发起暂停下载申请时,此时并没有发生网络中断等异常情况,仅需要将任务列表中的下载任务暂停,下载任务并没有从任务列表或任务池中清除。当重新开始下载时,可以确定下载任务不仅存在于任务池中,而且存在于任务列表中,此时只需要将任务列表中的下载任务继续执行,就可以继续对待下载文件进行下载。
当中断下载时,此时需要对中断下载的原因进行分析,如果由于网络中断、需要进行文件下载的应用程序异常关闭等原因造成的中断下载,此时只要网络恢复、或需要进行文件下载的应用程序重新开启,下载任务就可以恢复。因此,为了与暂停下载的情况相区别,将下载任务从任务列表中移除,由于下载任务可以恢复,此时无需将下载任务从任务池中移除。当重新开始下载时,确定下载任务存在于任务池中,没有存在于任务列表中,此时,将任务池中的下载任务加入任务列表中,继续对待下载文件进行下载。
当中断下载时,并且由于异常情况造成下载任务无法恢复时,需要将下载任务从任务列表和任务池中均移除。此时,优选的,将存储地址中未下载完成的待下载文件也删除。当重新开始下载该待下载文件时,由于下载任务没有存在于任务列表和任务池中,此时,新建下载任务,并将新建的下载任务加入任务池和任务列表中,并且新建待下载文件重新下载。如果由于下载任务所在的任务池异常清除等异常情况,造成虽然没有任务列表和任务池中下载任务,但是存储地址存在待下载文件,对待下载文件重新命名后,新建待下载文件重新下载。
使用任务池和任务列表对下载任务进行管理,使得下载任务的管理灵活高效,并且可以进行批量下载任务的同一管理,提升下载任务的管理效率。
例如,如果由于网络异常,造成下载任务从任务列表中删除,下载任务仅存在于任务池中时。当网络恢复时,可以无需获取客户端的消息、指令或命令,直接自动将存在于任务池中而没有存在于任务列表中的下载任务批量启动,将每个存在于任务池中而没有存在于任务列表中下载任务均添加到任务列表中,批量重启下载任务,对每个下载任务对应的待下载文件进行自动的断点续传。
进一步的,任务列表和任务池中的任务可以依托线程执行,在新建一个下载任务时,开启一个新的线程执行该下载任务。这样,就可以使用多线程技术,同时并行执行两个以上的下载任务,利用至少一个线程对每个下载任务进行执行管理,大大提升待下载文件的下载效率。
本申请与现有技术不同,在文件下载中断时,不保存中断点信息,而是直接根据存储地址,检查存储地址是否存在待下载文件,并在存在待下载文件时,确定待下载文件已下载的字节数,从而根据已下载的字节数,确定待下载文件需要继续进行数据传输的开始字节位置,并根据开始字节位置和下载地址生成下载请求,从开始字节位置开始继续下载待下载文件,从而实现高效高可靠性的断点续传。进一步的,本申请使用下载任务管理机制对待下载文件进行进一步的验证,避免出现待下载文件损坏等不可恢复下载的情形,在出现不可恢复下载的情形时,将下载任务从任务列表和任务池中均清除,预选的,将待下载文件从存储地址删除,当建立新的下载任务时,重新下载待下载文件。进一步的,为了防止下载任务从任务池中误删除,而待下载文件未从存储地址删除的情况,增加重命名机制,在存储地址中已经存在文件名为第一文件名称的文件时,重新确定待下载文件的第二文件名称,并根据第二文件名称在存储地址新建待下载文件,对待下载文件进行重新下载。
通过上述技术手段,可以实现高效、高可靠性的文件传输,尤其对于数据量较大的文件来说,无论遇到何种终端情况,无论是网络终端、需要进行文件下载的应用程序的异常退出、下载任务的损坏或待下载文件的意外损坏,均可以通过本申请高效、准确地完成任务下载。
基于相同的设计构思,本申请实施例还提供一种文件下载装置、存储介质及电子设备。
实施例三
如图3所示,本申请实施例还提供一种文件下载装置300,包括:
获取模块301,用于获取待下载文件的下载地址、存储地址和第一文件名称;
文件检测模块302,用于根据所述第一文件名称和所述存储地址,判断所述存储地址是否已经存在所述待下载文件,并在存在所述待下载文件时,根据已经存在的所述待下载文件确定已下载的字节数,
任务管理模块303,用于判断任务池中是否已经存在所述待下载文件的下载任务;
网络请求模块304,用于当存在所述下载任务时,根据已下载的字节数确定所述下载任务的开始字节位置;还用于根据所述开始字节位置和所述下载地址生成下载请求;
数据写入模块305,用于继续下载所述待下载文件。
一种可能的实施方式中,文件检测模块302,还用于,当不存在所述下载任务时,判断所述待下载文件是否下载完成;
重命名模块306,用于当所述待下载文件未下载完成时,重新确定所述待下载文件的第二文件名称;
网络请求模块304,还用于根据所述下载地址生成所述下载请求;
数据写入模块305,还用于根据所述第二文件名称和所述存储地址,重新下载所述待下载文件。
一种可能的实施方式中,文件检测模块302,还用于,根据已下载的字节数和所述待下载文件的总字节数,确定所述待下载文件是否下载完成。
一种可能的实施方式中,重命名模块306,还用于:
为所述待下载文件的第一文件名称增加字符后缀,生成所述第二文件名称。
一种可能的实施方式中,重命名模块306,还用于:
为所述待下载文件的第一文件名称增加数字后缀,生成第三文件名称;
判断所述存储地址中是否存在文件名称与所述第三文件名称相同的文件;
当存在文件名称与所述第三文件名称相同的文件时,递增修改所述数字后缀,直至所述第三文件名称与存储地址中的每个文件的文件名称均不相同为止;
当所述第三文件名称与存储地址中的每个文件的文件名称均不相同时,将所述第三文件名称确定为所述第二文件名称。
一种可能的实施方式中,网络请求模块304,还用于:当不存在所述待下载文件时,根据所述下载地址生成所述下载请求;
数据写入模块305,还用于根据所述第一文件名称和所述存储地址,下载所述待下载文件。
一种可能的实施方式中,任务管理模块303,还用于:
新建所述下载任务,并将所述下载任务加入所述任务池。
一种可能的实施方式中,任务管理模块303,还用于:
确定所述下载任务的任务标识,判断所述任务池中是否包含有所述任务标识。
一种可能的实施方式中,任务管理模块303,还用于:
根据所述下载地址,确定所述下载任务的任务标识。
一种可能的实施方式中,任务管理模块303,还用于:
当所述下载任务中断时,判断所述下载任务是否可被恢复;
如果所述下载任务不可被恢复,将所述下载任务从所述任务池中删除。
一种可能的实施方式中,任务管理模块303,还用于:
将所述下载任务加入任务列表中。
一种可能的实施方式中,任务管理模块303,还用于:
当所述下载任务中断时,将所述下载任务从任务列表中删除。
如图4所示,任务管理模块303对任务池和任务列表进行管理,在新的下载任务建立时,将新建的下载任务加入任务池,并在下载任务开始执行时,将下载任务由任务池加入任务列表。当下载任务结束或下载任务由于不可恢复的原因中断时,将下载任务从任务池和任务列表中均移除;当下载任务由于可恢复的原因中断时,将下载任务仅从任务列表中移除;当下载任务暂停时,将下载任务保留在任务池和任务列表中。
实施例四
一种计算机可读介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行本申请实施例提供的任一种文件下载方法的步骤。实际应用中,所述的计算机可读介质可以是上述实施例中描述的设备/装置/系统中所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或多个程序被执行时,实现根据参考本申请实施例提供的任一种文件下载装置进行本申请实施例提供的任一种文件下载方法的步骤。
根据本申请公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本申请保护的范围。在本申请公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
本申请所述的方法步骤除了可以用数据处理程序来实现,还可以由硬件来实现,例如,可以由逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器和嵌微控制器等来实现。因此这种可以实现本申请所述方法的硬件也可以构成本申请。
实施例五
本申请实施例还提供一种电子设备,可以是计算机或服务器,其中可以集成本申请实施例提供的任一种文件下载装置。如图5所示,其示出了本申请实施例提供的电子设备500。
该电子设备可以包括一个或者一个以上处理核心的处理器501、一个或一个以上计算机可读存储介质502。该电子设备还可以包括电源503、输入输出单元504。本领域技术人员可以理解,图5中并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中:
处理器501是该电子设备的控制部分,利用各种接口和线路连接各个部分,通过运行或执行存储在计算机可读存储介质502中的软件程序,执行本申请实施例提供的任一种文件下载方法的步骤。
计算机可读存储介质502可用于存储软件程序,即本申请实施例提供的任一种文件下载方法中涉及的程序。
处理器501通过运行存储在计算机可读存储介质502的软件程序,从而执行各种功能应用以及数据处理。计算机可读存储介质502可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据电子设备需要使用的数据等。此外,计算机可读存储介质502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,计算机可读存储介质502还可以包括存储器控制器,以提供处理器501对计算机可读存储介质502的访问。
电子设备还包括给各个部件供电的电源503,优选的,电源503可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源503还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该服务器还可包括输入输出单元504,比如可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入;比如可用于显示由用户输入的信息或提供给用户的信息以及服务器的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
本申请实施例提供的任一种文件下载方法、装置、存储介质及电子设备均基于相同的设计构思,并且本申请任一个实施例中的技术手段可以进行自由组合,组合得到的技术手段仍在本申请的保护范围之内。
本申请附图中的流程图和框图,示出了按照本申请公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本申请中。特别地,在不脱离本申请精神和教导的情况下,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本申请公开的范围。
本申请中应用了具体实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思路,并不用于限制本申请。对于本领域的技术人员来说,可以依据本申请的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (15)
1.一种文件下载方法,其特征在于,包括:
获取待下载文件的下载地址、存储地址和第一文件名称;
根据所述第一文件名称和所述存储地址,判断所述存储地址是否已经存在所述待下载文件,并在存在所述待下载文件时,根据已经存在的所述待下载文件确定已下载的字节数;
判断任务池中是否已经存在所述待下载文件的下载任务,当存在所述下载任务时,根据已下载的字节数确定所述下载任务的开始字节位置;
根据所述开始字节位置和所述下载地址生成下载请求,继续下载所述待下载文件。
2.根据权利要求1所述的方法,其特征在于,所述判断任务池中是否已经存在所述待下载文件的下载任务的步骤之后,所述方法还包括:
当不存在所述下载任务时,判断所述待下载文件是否下载完成;
当所述待下载文件未下载完成时,重新确定所述待下载文件的第二文件名称;
根据所述下载地址生成所述下载请求,并根据所述第二文件名称和所述存储地址,重新下载所述待下载文件。
3.根据权利要求2所述的方法,其特征在于,所述判断所述待下载文件是否下载完成的步骤,包括:
根据已下载的字节数和所述待下载文件的总字节数,确定所述待下载文件是否下载完成。
4.根据权利要求2所述的方法,其特征在于,所述重新确定所述待下载文件的第二文件名称的步骤,包括:
为所述待下载文件的第一文件名称增加字符后缀,生成所述第二文件名称。
5.根据权利要求2所述的方法,其特征在于,所述重新确定所述待下载文件的第二文件名称的步骤,包括:
为所述待下载文件的第一文件名称增加数字后缀,生成第三文件名称;
判断所述存储地址中是否存在文件名称与所述第三文件名称相同的文件;
当存在文件名称与所述第三文件名称相同的文件时,递增修改所述数字后缀,直至所述第三文件名称与存储地址中的每个文件的文件名称均不相同为止;
当所述第三文件名称与存储地址中的每个文件的文件名称均不相同时,将所述第三文件名称确定为所述第二文件名称。
6.根据权利要求1所述的方法,其特征在于,所述判断所述存储地址是否已经存在所述待下载文件的步骤之后,所述方法还包括:
当不存在所述待下载文件时,根据所述下载地址生成所述下载请求,并根据所述第一文件名称和所述存储地址,下载所述待下载文件。
7.根据权利要求6所述的方法,其特征在于,当不存在所述待下载文件时,所述根据所述下载地址生成所述下载请求的步骤之前,所述方法还包括:
新建所述下载任务,并将所述下载任务加入所述任务池。
8.根据权利要求1所述的方法,其特征在于,所述判断任务池中是否已经存在所述待下载文件的下载任务的步骤,包括:
确定所述下载任务的任务标识,判断所述任务池中是否包含有所述任务标识。
9.根据权利要求8所述的方法,其特征在于,所述确定所述下载任务的任务标识的步骤,包括:
根据所述下载地址,确定所述下载任务的任务标识。
10.根据权利要求1所述的方法,其特征在于,所述继续下载所述待下载文件的步骤之后,所述方法还包括:
当所述下载任务中断时,判断所述下载任务是否可被恢复;
如果所述下载任务不可被恢复,将所述下载任务从所述任务池中删除。
11.根据权利要求1所述的方法,其特征在于,当存在所述下载任务时,所述根据已下载的字节数确定所述下载任务的开始字节位置的步骤之前,所述方法还包括:
将所述下载任务加入任务列表中。
12.根据权利要求11所述的方法,其特征在于,所述继续下载所述待下载文件的步骤之后,所述方法还包括:
当所述下载任务中断时,将所述下载任务从任务列表中删除。
13.一种文件下载装置,其特征在于,包括:
获取模块,用于获取待下载文件的下载地址、存储地址和第一文件名称;
文件检测模块,用于根据所述第一文件名称和所述存储地址,判断所述存储地址是否已经存在所述待下载文件,并在存在所述待下载文件时,根据已经存在的所述待下载文件确定已下载的字节数;
任务管理模块,用于判断任务池中是否已经存在所述待下载文件的下载任务;
网络请求模块,用于当存在所述下载任务时,根据已下载的字节数确定所述下载任务的开始字节位置;还用于根据所述开始字节位置和所述下载地址生成下载请求;
数据写入模块,用于继续下载所述待下载文件。
14.一种计算机可读存储介质,存储有计算机指令,其特征在于,所述指令被处理器执行时可实现权利要求1~12任一项所述的方法的步骤。
15.一种电子设备,其特征在于,该电子设备包括如权利要求14所述的计算机可读存储介质,还包括可执行所述计算机可读存储介质的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911051239.0A CN112751899A (zh) | 2019-10-31 | 2019-10-31 | 文件下载方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911051239.0A CN112751899A (zh) | 2019-10-31 | 2019-10-31 | 文件下载方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112751899A true CN112751899A (zh) | 2021-05-04 |
Family
ID=75641263
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911051239.0A Pending CN112751899A (zh) | 2019-10-31 | 2019-10-31 | 文件下载方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112751899A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114666322A (zh) * | 2022-03-22 | 2022-06-24 | 通号智慧城市研究设计院有限公司 | 断点续传方法、装置和电子设备 |
CN115878676A (zh) * | 2023-02-08 | 2023-03-31 | 成都数联云算科技有限公司 | 一种预览文件的方法、装置、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104301342A (zh) * | 2013-07-17 | 2015-01-21 | 北京齐尔布莱特科技有限公司 | 一种断点下载文件的方法 |
CN105100133A (zh) * | 2014-04-25 | 2015-11-25 | 广州市动景计算机科技有限公司 | 资源下载方法及装置 |
CN109462650A (zh) * | 2018-11-14 | 2019-03-12 | 深圳市小牛普惠投资管理有限公司 | 数据文件下载方法、装置、计算机设备及存储介质 |
CN110336871A (zh) * | 2019-07-01 | 2019-10-15 | 江苏满运软件科技有限公司 | 一种文件处理方法、装置、存储介质及电子设备 |
-
2019
- 2019-10-31 CN CN201911051239.0A patent/CN112751899A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104301342A (zh) * | 2013-07-17 | 2015-01-21 | 北京齐尔布莱特科技有限公司 | 一种断点下载文件的方法 |
CN105100133A (zh) * | 2014-04-25 | 2015-11-25 | 广州市动景计算机科技有限公司 | 资源下载方法及装置 |
CN109462650A (zh) * | 2018-11-14 | 2019-03-12 | 深圳市小牛普惠投资管理有限公司 | 数据文件下载方法、装置、计算机设备及存储介质 |
CN110336871A (zh) * | 2019-07-01 | 2019-10-15 | 江苏满运软件科技有限公司 | 一种文件处理方法、装置、存储介质及电子设备 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114666322A (zh) * | 2022-03-22 | 2022-06-24 | 通号智慧城市研究设计院有限公司 | 断点续传方法、装置和电子设备 |
CN115878676A (zh) * | 2023-02-08 | 2023-03-31 | 成都数联云算科技有限公司 | 一种预览文件的方法、装置、设备和介质 |
CN115878676B (zh) * | 2023-02-08 | 2023-05-05 | 成都数联云算科技有限公司 | 一种预览文件的方法、装置、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634638B (zh) | 一种集群软件升级方法、装置、设备及介质 | |
CN112751899A (zh) | 文件下载方法、装置、存储介质及电子设备 | |
CN107656776A (zh) | 一种fpga加速卡的固件更新方法、装置及介质 | |
CN110225078B (zh) | 一种应用服务更新方法、系统及终端设备 | |
CN104915226A (zh) | 一种网络设备软件启动方法、装置及网络设备 | |
CN111061981A (zh) | 页面管理方法、装置、存储介质及电子设备 | |
CN110708362A (zh) | 调用关系确定方法、装置、存储介质及电子设备 | |
CN109361542A (zh) | 客户端的故障处理方法、装置、系统、终端和服务器 | |
CN111124761B (zh) | 一种设备重启方法、装置、设备及介质 | |
CN103902399A (zh) | 软件系统修复处理方法及装置 | |
CN102722669B (zh) | 操作系统的完整性验证方法 | |
US8630982B2 (en) | Individual object restore | |
CN113760306A (zh) | 安装软件的方法、装置、电子设备及存储介质 | |
CN105045627A (zh) | 一种实现服务器在线更新网卡配置文件的方法 | |
CN106095474A (zh) | 用于更新运输工具中的软件的方法和装置 | |
JP2012526322A (ja) | オペレーティングシステム状態の取込み及びローディング | |
CN108664255B (zh) | 一种软件升级方法及装置 | |
CN109271194A (zh) | 基于分布式版本控制系统的分支访问方法和装置 | |
CN111488117A (zh) | 用于管理元数据的方法、电子设备和计算机可读介质 | |
CN113886497A (zh) | 一种双向实时数据监控方法和装置 | |
CN106022125B (zh) | 一种客户端的修复方法及装置 | |
CN108829455A (zh) | 一种设备标识获取方法、装置及设备 | |
CN107729022B (zh) | 卸载应用程序的方法、装置和移动终端 | |
CN111427720A (zh) | 数据库修复方法、装置、计算机设备及存储介质 | |
CN113946275A (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 |