CN111787105A - 文件传输方法、装置、计算机设备和存储介质 - Google Patents
文件传输方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN111787105A CN111787105A CN202010621881.4A CN202010621881A CN111787105A CN 111787105 A CN111787105 A CN 111787105A CN 202010621881 A CN202010621881 A CN 202010621881A CN 111787105 A CN111787105 A CN 111787105A
- Authority
- CN
- China
- Prior art keywords
- thread
- file
- data
- target file
- byte 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.)
- Granted
Links
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 Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请涉及一种文件传输方法、装置、计算机设备和存储介质。所述方法包括:获取目标文件的大小对应的字节数据;将所述字节数据与预设阈值进行比较;当所述字节数据大于预设阈值时,开启双线程对所述目标文件进行传输,直到所述目标文件的剩余传输字节数据小于或等于所述预设阈值;当所述目标文件的剩余传输字节数据小于或等于所述预设阈值时,开启单线程对所述目标文件进行传输;将每个线程传输的数据进行合并,得到所述目标文件对应的数据。采用本方法能够实现根据目标文件的大小,动态调节目标文件的传输方式,无需在服务端创建倒序文件进行传输,避免了繁琐的操作流程和大量时间的耗费,有效的提高了文件传输效率,提升了大文件的下载速度。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种文件传输方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术的发展,5G时代的来临,互联网的出现给现代生活带来了极大的便利,越来越多的用户可以通过使用移动终端设备与不同的互联网平台进行数据传输。随着互联网的发展,FTP已经成为用于网络上进行文件传输的最广泛的协议之一,FTP文件传输协议(File Transfer Protocol)是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。
然而,目前的FTP双线程下载文件的方式中,用户在使用双线程下载不同文件时,首先需要在服务端创建一个倒序文件,将原有的文件一个个字节拷贝到另外一个文件中生成对应的倒序文件,如果是包含大量字节数据的文件,则需要花费大量时间创建倒序文件,一旦服务器或者客户端发生网络异常,中断下载,只能重新开始创建倒序文件,生成倒序文件之后,双线程分别开始读取原文件和倒序文件中的数据进行传输,容易导致文件的传输效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高文件传输效率的文件传输方法、装置、计算机设备和存储介质。
一种文件传输方法,所述方法包括:
获取目标文件的大小对应的字节数据;
将所述字节数据与预设阈值进行比较;
当所述字节数据大于预设阈值时,开启双线程对所述目标文件进行传输,直到所述目标文件的剩余传输字节数据小于或等于所述预设阈值;
当所述目标文件的剩余传输字节数据小于或等于所述预设阈值时,开启单线程对所述目标文件进行传输;
将每个线程传输的数据进行合并,得到所述目标文件对应的数据。
在其中一个实施例中,所述当所述字节数据大于预设阈值时,开启双线程对所述目标文件进行传输包括:
获取第一线程下载所述字节数据的第一起始位置;
获取第二线程下载所述字节数据的第二起始位置;所述第二起始位置位于所述第一下起始位置之后;
调用所述第一线程从所述第一下载数据位置开始进行数据传输,将所述第一线程下载的数据储存在对应的第一缓存文件中;
调用所述第二线程从所述第二下载数据位置开始进行数据传输,将所述第二线程下载的数据储存在对应的第二缓存文件中。
在其中一个实施例中,所述开启双线程对所述目标文件进行传输,还包括:
所述第一线程、第二线程同时开始进行数据传输;
当所述第一线程优先完成对应的数据传输时,则暂停所述第一线程、第二线程传输数据,将所述第一缓存文件和所述第二缓存文件储存至第一下载文件中;
获取所述第二线程对应的剩余传输字节数据;
当所述剩余传输数据字节数据大于所述预设阈值时,则继续调用所述第一线程、第二线程对所述剩余传输数据字节数据进行传输,直到所述目标文件的剩余传输字节数据小于所述预设阈值。
在其中一个实施例中,所述开启双线程对所述目标文件进行传输,还包括:
当所述第二线程优先完成对应的数据传输时,则暂停所述第一线程、第二线程传输数据,将所述第二缓存文件储存至第二下载文件中;
获取所述第一线程对应的剩余传输字节数据;
当所述剩余传输字节数据大于预设阈值时,则继续调用所述第一线程、第二线程对所述剩余传输字节数据进行传输,直到所述目标文件的剩余传输字节数据小于预设阈值。
在其中一个实施例中,所述开启双线程对所述目标文件进行传输,还包括:
当所述第一线程、第二线程同时完成对应的数据传输时,则将所述第一缓存文件储存至第一下载文件中,将所述第二缓存文件储存至第二下载文件中;
将所述第一下载文件、所述第二下载文件进行合并,得到所述目标文件对应的数据。
在其中一个实施例中,所述将每个线程传输的数据进行合并,得到所述目标文件对应的数据包括:
将所述第一下载文件、所述第二下载文件进行合并,得到所述目标文件对应的数据;其中,所述第一下载文件用于储存所述目标文件对应的字节数据的首部,所述第二下载文件用于储存所述目标文件对应的字节数据的尾部。
一种文件传输装置,所述装置包括:
获取模块,用于获取目标文件的大小对应的字节数据;
比较模块,用于将所述字节数据与预设阈值进行比较;
传输模块,用于当所述字节数据大于预设阈值时,开启双线程对所述目标文件进行传输,直到所述目标文件的剩余传输字节数据小于或等于所述预设阈值;当所述目标文件的剩余传输字节数据小于或等于所述预设阈值时,开启单线程对所述目标文件进行传输;
合并模块,用于将每个线程传输的数据进行合并,得到所述目标文件对应的数据。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取目标文件的大小对应的字节数据;
将所述字节数据与预设阈值进行比较;
当所述字节数据大于预设阈值时,开启双线程对所述目标文件进行传输,直到所述目标文件的剩余传输字节数据小于或等于所述预设阈值;
当所述目标文件的剩余传输字节数据小于或等于所述预设阈值时,开启单线程对所述目标文件进行传输;
将每个线程传输的数据进行合并,得到所述目标文件对应的数据。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取目标文件的大小对应的字节数据;
将所述字节数据与预设阈值进行比较;
当所述字节数据大于预设阈值时,开启双线程对所述目标文件进行传输,直到所述目标文件的剩余传输字节数据小于或等于所述预设阈值;
当所述目标文件的剩余传输字节数据小于或等于所述预设阈值时,开启单线程对所述目标文件进行传输;
将每个线程传输的数据进行合并,得到所述目标文件对应的数据。
上述文件传输方法、装置、计算机设备和存储介质,通过获取目标文件的大小对应的字节数据,相对于传统的文件传输方式,将字节数据与预设阈值进行比较。当字节数据大于预设阈值时,开启双线程对目标文件进行传输,直到目标文件的剩余传输字节数据小于或等于预设阈值。当目标文件的剩余传输字节数据小于或等于预设阈值时,开启单线程对目标文件进行传输。将每个线程传输的数据进行合并,得到目标文件对应的数据。由此使得,当需要对包含大量字节数据的文件进行传输时,通过获取目标文件的大小对应的字节数据,将字节数据与预设阈值进行比较。当字节数据大于预设阈值时,开启双线程对目标文件进行传输,直到目标文件的剩余传输字节数据小于或等于预设阈值。当目标文件的剩余传输字节数据小于或等于预设阈值时,开启单线程对目标文件进行传输,即可实现根据目标文件的大小,动态调节目标文件的传输方式,无需在服务端创建倒序文件进行传输,有效的避免了传统文件传输方式中繁琐的操作流程和大量时间的耗费,在不更改服务器的内容,不多占用服务器空间的前提下,能够实现大文件的快速下载,即使当服务器或者客户端碰到异常状态时,即网络异常或异常断开时,也能够支持在网络断开前的下载位置继续进行数据下载,从而有效的提高了文件的传输效率,提升了大文件的下载速度。
附图说明
图1为一个实施例中文件传输方法的应用环境图;
图2为一个实施例中文件传输方法的流程示意图;
图3为一个实施例中当字节数据大于预设阈值时,开启双线程对目标文件进行传输步骤的流程示意图;
图4为另一个实施例中开启双线程对目标文件进行传输步骤的流程示意图;
图5为另一个实施例中开启双线程对目标文件进行传输步骤的流程示意图;
图6为另一个实施例中开启双线程对目标文件进行传输步骤的流程示意图;
图7为另一个实施例中文件传输方法的流程示意图;
图8为一个实施例中文件传输装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的文件传输方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104通过网络进行通信。终端102可以通过向服务器104发送请求,从服务器104获取与目标文件对应的字节数据。终端102从服务器104获取目标文件的大小对应的字节数据。终端102将字节数据与预设阈值进行比较。当终端102检测到目标文件的字节数据大于预设阈值时,终端102开启双线程对目标文件进行传输,直到目标文件的剩余传输字节数据小于或等于预设阈值。当终端102检测到目标文件的剩余传输字节数据小于或等于预设阈值时,终端102开启单线程对目标文件进行传输。终端102将每个线程传输的数据进行合并,得到目标文件对应的数据。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种文件传输方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤202,获取目标文件的大小对应的字节数据。
终端可以与服务器通过网络进行通信,通过网络通信连接保持在线状态。例如,不同类型的终端设备可以通过连接到无线网络或局域网后,使用运营商稳定的网络传输。在目前的文件传输方式中,FTP已经成为用于网络上进行文件传输的最广泛的协议之一,FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。FTP是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。用户可以使用不同的终端设备,通过在网页或应用程序中输入用户名和密码的方式登录FTP服务器授权的帐号,即用户可以使用终端设备通过FTP协议访问位于FTP服务器上的资源。在FTP客户端登录成功后,用户可以使用终端设备向FTP服务器发送指令,下载对应的文件数据。具体的,用户可以使用终端设备向FTP服务器发送获取目标文件字节数据的指令,从而获取想要下载的文件的大小,即终端可以向FTP服务器发送获取目标文件字节数据的指令,获取目标文件大小对应的字节数据,FTP服务器根据接收到的目标文件的字节数据获取指令,返回目标文件大小对应的字节数据至终端。其中,目标文件指的是用户想要下载的文件,文件的大小指的是文件或文件夹的属性信息中的文件实际的大小值,文件的大小能衡量一个计算机文件的大小,通常情况下以字节数据表示文件的大小。字节数据指的是用来衡量文件大小的字节数值,每个文件的实际大小都可以用字节数值来表示。文件实际所占磁盘空间取决于文件系统。文件系统的最大文件大小取决于保留存储尺寸信息的位数量以及文件系统的总大小。例如,在FAT32文件系统中,单个文件的大小不能超过4GB。一些常见的文件大小单位是:1B=8字节、1KB=1024B、1MB=1024KB、1GB=1024MB。因而1MB=1024×1024B=1048576×8=8388608字节。例如,用户想要下载的目标文件为test.txt,则终端可以向服务器发送SIZE<test.txt>命令获取目标文件的大小,则服务器根据接收到的SIZE<test.txt>命令,返回目标文件的大小对应的字节数据至终端。
步骤204,将字节数据与预设阈值进行比较。
当终端获取目标文件的大小对应的字节数据之后,终端将上述获取到的字节数据与预设阈值进行比较。其中,用户可以根据自身需求,预先设置下载文件对应的阈值,可以预先设置单个传输文件的阈值,也可以设置所有传输文件的总大小阈值。例如,用户可以预先设置单个传输文件的阈值为10字节,终端将目标文件对应的字节数据与预设阈值10字节进行比较,当目标文件的字节数据小于或等于预设阈值10个字节时,则终端判定目标文件为小文件,当目标文件的字节数据大于预设阈值10个字节时,则终端判定目标文件为大文件。
步骤206,当字节数据大于预设阈值时,开启双线程对目标文件进行传输,直到目标文件的剩余传输字节数据小于或等于预设阈值。
终端将上述获取到的字节数据与预设阈值进行比较,当终端检测到目标文件的字节数据大于预设阈值时,则终端开启双线程对目标文件进行传输,直到目标文件的剩余传输字节数据小于或等于预设阈值。其中,双线程是指两个独立运行的线程,终端可以根据FTP协议创建不同的线程与服务器进行数据传输。当终端检测到目标文件的字节数据大于预设阈值时,则终端可以计算线程1、线程2下载字节数据的起始位置和结束位置。终端可以按照预设规则对目标文件的字节数据进行合理分配,计算得到线程1下载字节数据的起始位置site1和线程2下载字节数据的起始位置site2。例如,当终端检测到目标文件的字节数据为30字节大于预设阈值10字节时,终端可以按照预设规则对目标文件的字节数据进行平均分配,计算得到线程1下载字节数据的起始位置site1=1为第一个字节,结束位置site10为第15个字节;线程2下载字节数据的起始位置site2为第16个字节,结束位置site20为第30个字节。终端可以按照预设规则对目标文件的字节数据进行随机分配,计算得到线程1下载字节数据的起始位置site1为第一个字节,结束位置site10为第10个字节;线程2下载字节数据的起始位置site2为第11个字节,结束位置site20为第30个字节。若终端检测到线程1和线程2已创建好,则终端可以直接开启线程1和线程2对目标文件进行传输。即终端调用线程1从site1的位置、线程2从site2的位置同时开始下载数据,将线程1下载的数据存放在对应的文件缓存区,线程2下载的数据存放在对应的文件缓存区,当终端检测到双线程中至少一个线程完成数据传输时,则终端可以按照预设规则将线程1对应的缓存文件和线程2对应的缓存文件储存至对应的中间文件中,终端继续调用线程1、线程2对目标文件的剩余数据进行传输,直到终端检测到目标文件的剩余传输字节数据小于或等于预设阈值,则终端退出双线程循环下载模式。
步骤208,当目标文件的剩余传输字节数据小于或等于预设阈值时,开启单线程对目标文件进行传输。
当字节数据大于预设阈值时,终端开启双线程对目标文件进行传输,直到终端检测到目标文件的剩余传输字节数据小于或等于预设阈值。由于每个线程连接的端口不同,在数据传输过程中对应的下载速度不同,因而开启双线程进行传输文件时,可能会出现下述三种不同的下载情况,线程1优先下载完对应的数据或者线程2优先下载完对应的数据或者线程1、线程2同时下载完对应的数据。当终端开启上述双线程对目标文件进行下载时,系统会一直重复循环上述的三种下载情况,直到终端检测到目标文件的剩余传输字节数据小于或等于预设阈值时,则终端退出双线程循环下载模式,终端开启单线程对目标文件的剩余字节数据进行传输。例如,当终端检测到目标文件的剩余传输字节数据小于或等于预设阈值时,或者当终端检测到标志位的状态为预设值时,则终端开启单线程对目标文件进行传输,即终端只调用线程1对目标文件的剩余字节数据进行传输,并将线程1下载的数据按照预设规则存放在对应的中间文件中。其中,在创建单线程对目标文件进行传输时,可以预先设置开启单线程传输对应的标志位状态,比如,当终端开启单线程进行数据传输时,则标志位状态为1,当终端没有开启单线程进行数据传输时,则标志位状态为0,则终端可以根据检测到的标志位的状态变化,判断是否需要开启单线程进行数据传输。
步骤210,将每个线程传输的数据进行合并,得到目标文件对应的数据。
当终端对目标文件的所有字节数据下载完毕之后,终端将每个线程传输的数据进行合并,得到目标文件对应的数据。具体的,在终端开启双线程对目标文件进行传输时,终端将线程1下载的数据存放在对应的文件缓存区,线程2下载的数据存放在对应的文件缓存区,当终端检测到双线程中至少一个线程完成数据传输时,则终端可以根据预设规则将线程1对应的缓存文件和线程2对应的缓存文件储存至对应的中间文件中,终端继续调用线程1、线程2对目标文件的剩余数据进行传输,直到终端检测到目标文件的剩余传输字节数据小于或等于预设阈值,则终端开启单线程对目标文件的剩余字节数据进行传输,并将线程1下载的数据按照预设规则存放在对应的中间文件中。当终端对目标文件的所有字节数据下载完毕之后,终端将上述每个线程传输的数据进行合并,即将上述每个线程对应的中间文件进行合并,得到目标文件对应的完整数据。
本实施例中,通过获取目标文件的大小对应的字节数据,相对于传统的文件传输方式,将字节数据与预设阈值进行比较。当字节数据大于预设阈值时,开启双线程对目标文件进行传输,直到目标文件的剩余传输字节数据小于或等于预设阈值。当目标文件的剩余传输字节数据小于或等于预设阈值时,开启单线程对目标文件进行传输。将每个线程传输的数据进行合并,得到目标文件对应的数据。由此使得,当需要对包含大量字节数据的文件进行传输时,通过获取目标文件的大小对应的字节数据,将字节数据与预设阈值进行比较。当字节数据大于预设阈值时,开启双线程对目标文件进行传输,直到目标文件的剩余传输字节数据小于或等于预设阈值。当目标文件的剩余传输字节数据小于或等于预设阈值时,开启单线程对目标文件进行传输,即可实现根据目标文件的大小,动态调节目标文件的传输方式,无需在服务端创建倒序文件进行传输,有效的避免了传统文件传输方式中繁琐的操作流程和大量时间的耗费,在不更改服务器的内容,不多占用服务器空间的前提下,能够实现大文件的快速下载,即使当服务器或者客户端碰到异常状态时,即网络异常或异常断开时,也能够支持在网络断开前的下载位置继续进行数据下载,从而有效的提高了文件的传输效率,提升了大文件的下载速度。
在一个实施例中,如图3所示,当字节数据大于预设阈值时,开启双线程对目标文件进行传输的步骤包括:
步骤302,获取第一线程下载字节数据的第一起始位置。
步骤304,获取第二线程下载字节数据的第二起始位置,第二起始位置位于第一下起始位置之后。
步骤306,调用第一线程从第一下载数据位置开始进行数据传输,将第一线程下载的数据储存在对应的第一缓存文件中。
步骤308,调用第二线程从第二下载数据位置开始进行数据传输,将第二线程下载的数据储存在对应的第二缓存文件中。
终端将上述获取到的目标文件对应的字节数据与预设阈值进行比较,当终端检测到目标文件的字节数据大于预设阈值时,则终端开启双线程对目标文件进行传输,直到目标文件的剩余传输字节数据小于或等于预设阈值。具体的,终端可以获取第一线程下载字节数据的第一起始位置和第一结束位置,终端可以获取第二线程下载字节数据的第二起始位置和第二结束位置,第二起始位置位于第一下起始位置之后,第二结束位置位于第一下结束位置之后。终端调用第一线程从第一下载数据位置开始进行数据传输,将第一线程下载的数据储存在对应的第一缓存文件中。终端调用第二线程从第二下载数据位置开始进行数据传输,将第二线程下载的数据储存在对应的第二缓存文件中。具体的,终端可以按照预设规则对目标文件的字节数据进行合理分配,计算得到线程1下载字节数据的起始位置site1和线程2下载字节数据的起始位置site2。例如,当终端检测到目标文件的字节数据为30字节大于预设阈值10字节时,终端可以按照预设规则对目标文件的字节数据进行平均分配,计算得到线程1下载字节数据的第一起始位置site1=1为第一个字节,第一结束位置site10为第15个字节;线程2下载字节数据的第二起始位置site2为第16个字节,第二结束位置site20为第30个字节。终端调用线程1从site1的位置、线程2从site2的位置同时开始下载数据,将线程1下载的数据储存在对应的第一缓存文件中,线程2下载的数据储存在对应的第二缓存文件中。由此使得在不更改服务器的内容,不多占用服务器的空间的前提下,无需在服务端创建倒序文件进行传输,有效的避免了传统文件传输方式中繁琐的操作流程和大量时间的耗费,能够实现FTP双线程大文件的快速下载。
在其中一个实施例中,如图4所示,开启双线程对目标文件进行传输的步骤还包括:
步骤402,第一线程、第二线程同时开始进行数据传输。
步骤404,当第一线程优先完成对应的数据传输时,则暂停第一线程、第二线程传输数据,将第一缓存文件和第二缓存文件储存至第一下载文件中。
步骤406,获取第二线程对应的剩余传输字节数据。
步骤408,当剩余传输数据字节数据大于预设阈值时,则继续调用第一线程、第二线程对剩余传输数据字节数据进行传输,直到目标文件的剩余传输字节数据小于预设阈值。
当终端开启双线程对目标文件进行传输时,终端调用第一线程、第二线程同时开始进行数据传输。当终端检测到第一线程优先完成对应的数据传输时,则终端暂停第一线程、第二线程传输数据,终端将第一缓存文件和第二缓存文件储存至第一下载文件中。进一步的,终端获取第二线程对应的剩余传输字节数据。当终端检测上述目标文件的剩余传输数据字节数据大于预设阈值时,则终端继续调用第一线程、第二线程对剩余传输数据字节数据进行传输,直到目标文件的剩余传输字节数据小于预设阈值。例如,假设用户需要下载的目标文件test.txt的内容为0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ。终端将目标文件的大小对应的字节数据36个字节数与预设阈值进行比较,比如预设阈值为10个字节,当终端检测到目标文件的字节数据36大于预设阈值10时,则终端开启双线程对目标文件进行传输。终端可以按照预设规则对目标文件的字节数据进行平均分配,计算得到线程1下载字节数据的第一起始位置site1=1为第一个字节,第一结束位置site10为第18个字节;线程2下载字节数据的第二起始位置site2为第19个字节,第二结束位置site20为第36个字节。终端调用线程1从site1的位置、线程2从site2的位置同时开始下载数据,将线程1下载的数据储存在对应的第一缓存文件中,线程2下载的数据储存在对应的第二缓存文件中。当终端检测到线程1优先完成对应的数据传输时,则终端暂停线程1、线程2传输数据,此时,线程1下载的数据“0123456789ABCDEFGH”储存在对应的第一缓存文件中,线程2下载的数据“IJKL”储存在对应的第二缓存文件中。终端将第一缓存文件“0123456789ABCDEFGH”和第二缓存文件“IJKL”进行合并,得到数据为“0123456789ABCDEFGH IJKL”,终端将上述合并后的数据储存至第一下载文件中的尾部,并清除第一缓存文件和第二缓存文件中的内容。即第一下载文件中储存的数据为“0123456789ABCDEFGH IJKL”,第一缓存文件和第二缓存文件中没有数据。进一步的,终端获取线程2对应的剩余传输字节数据为“MNOPQRSTUVWXYZ”14个字节。当终端检测上述剩余传输数据字节数据14大于预设阈值10时,则终端继续调用第一线程、第二线程对剩余传输数据字节数据进行传输,终端可以循环上述双线程的传输模式直到目标文件的剩余传输字节数据小于预设阈值。具体的,终端可以按照预设规则对目标文件的剩余传输字节数14字节进行平均分配,计算得到线程1下载字节数据的第一起始位置site1=23为第23个字节,第一结束位置site10为第29个字节;线程2下载字节数据的第二起始位置site2为第30个字节,第二结束位置site20为第36个字节。终端调用线程1从site1的位置、线程2从site2的位置同时开始下载数据,将线程1下载的数据储存在对应的第一缓存文件中,线程2下载的数据储存在对应的第二缓存文件中。当终端检测到线程1优先完成对应的数据传输时,则终端暂停线程1、线程2传输数据,此时,线程1下载的数据“MNOPQRS”储存在对应的第一缓存文件中,线程2下载的数据“TUV”储存在对应的第二缓存文件中。终端将第一缓存文件“MNOPQRS”和第二缓存文件“TUV”与第一下载文件中的尾部进行拼接合并,并清除第一缓存文件和第二缓存文件中的内容。即第一下载文件中储存的数据为“0123456789ABCDEFGH IJKL MNOPQRS TUV”,第一缓存文件和第二缓存文件中没有数据。进一步的,终端获取上述线程2对应的剩余传输字节数据为“WXYZ”4个字节。当终端检测上述剩余传输数据字节数据4小于预设阈值10时,则终端退出双线程循环下载模式,终端开启单线程对目标文件的剩余数据进行传输。由此使得,通过在下载文件之前进行判断,根据文件大小动态调节文件传输模式,即小文件开启单线程下载,大文件开启两线程下载,有效避免了传统文件传输方式中复杂的位置判断,相比于多线程下载,两线程算法简单,合理利用了CPU的资源,无需在服务端创建倒序文件进行传输,有效提升了大文件的下载速度。
在其中一个实施例中,如图5所示,开启双线程对目标文件进行传输的步骤还包括:
步骤502,当第二线程优先完成对应的数据传输时,则暂停第一线程、第二线程传输数据,将第二缓存文件储存至第二下载文件中。
步骤504,获取第一线程对应的剩余传输字节数据。
步骤506,当剩余传输字节数据大于预设阈值时,则继续调用第一线程、第二线程对剩余传输字节数据进行传输,直到目标文件的剩余传输字节数据小于预设阈值。
当终端检测到第二线程优先完成对应的数据传输时,则暂停第一线程、第二线程传输数据,将第二缓存文件储存至第二下载文件中。终端获取第一线程对应的剩余传输字节数据,当终端检测到目标文件的剩余传输字节数据大于预设阈值时,则终端继续调用第一线程、第二线程对剩余传输字节数据进行传输,直到目标文件的剩余传输字节数据小于预设阈值。例如,假设用户需要下载的目标文件test.txt的内容为0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ。终端调用线程1从site1=1的位置、线程2从site2=19的位置同时开始下载数据,将线程1下载的数据储存在对应的第一缓存文件中,线程2下载的数据储存在对应的第二缓存文件中。当终端检测到线程2优先完成对应的数据传输时,则终端暂停线程1、线程2传输数据,此时线程1下载的数据“01234”储存在对应的第一缓存文件中,线程2下载的数据“IJKLMNOPQRSTUVWXYZ”储存在对应的第二缓存文件中。终端将第二缓存文件“IJKLMNOPQRSTUVWXYZ”储存至第二下载文件中的尾部,并清除第二缓存文件中的内容。即第二下载文件中储存的数据为“IJKLMNOPQRSTUVWXYZ”,第二缓存文件中没有数据。进一步的,终端获取线程1对应的剩余传输字节数据为“56789ABCDEFGH”13个字节。当终端检测上述剩余传输数据字节数据13大于预设阈值10时,则终端继续调用第一线程、第二线程对剩余传输数据字节数据进行传输,终端可以循环上述双线程的传输模式直到目标文件的剩余传输字节数据小于预设阈值。具体的,终端可以按照预设规则对目标文件的剩余传输字节数13字节进行随机分配,计算得到线程1下载字节数据的第一起始位置site1=6为第6个字节,第一结束位置site10为第11个字节;线程2下载字节数据的第二起始位置site2为第12个字节,第二结束位置site20为第18个字节。终端调用线程1从site1的位置、线程2从site2的位置同时开始下载数据,将线程1下载的数据储存在对应的第一缓存文件中,线程2下载的数据储存在对应的第二缓存文件中。当终端检测到线程2优先完成对应的数据传输时,则终端暂停线程1、线程2传输数据,此时,线程1下载的数据“567”储存在对应的第一缓存文件中,即第一缓存文件中的数据为“01234 567”。线程2下载的数据“BCDEFGH”储存在对应的第二缓存文件中。终端将第二缓存文件“BCDEFGH”与第二下载文件中已储存数据的头部进行拼接合并,并清除第二缓存文件中的内容。即第二下载文件中储存的数据为“BCDEFGHIJKLMNOPQRSTUVWXYZ”,第二缓存文件中没有数据。进一步的,终端获取上述线程2对应的剩余传输字节数据为“89A”3个字节。当终端检测上述剩余传输数据字节数据3小于预设阈值10时,则终端退出双线程循环下载模式,终端开启单线程对目标文件的剩余数据进行传输。由此使得根据文件大小,判断采用两线程还是单线程进行文件传输,同时采用缓存文件1和缓存文件2作为每个线程下载数据的暂存区,采用第一下载文件和第二下载文件(即test1.txt、text2.txt)作为最终目标文件的首尾两部分,能够保证文件传输的准确性,同时也不占用更多的资源空间。
在其中一个实施例中,如图6所示,开启双线程对目标文件进行传输的步骤还包括:
步骤602,当第一线程、第二线程同时完成对应的数据传输时,则将第一缓存文件储存至第一下载文件中,将第二缓存文件储存至第二下载文件中。
步骤604,将第一下载文件、第二下载文件进行合并,得到目标文件对应的数据。
当终端检测到第一线程、第二线程同时完成对应的数据传输时,则终端将第一缓存文件储存至第一下载文件中,将第二缓存文件储存至第二下载文件中。终端将第一下载文件、第二下载文件进行合并,得到目标文件对应的数据。例如,假设用户需要下载的目标文件test.txt的内容为0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ。终端调用线程1从site1=1的位置、线程2从site2=19的位置同时开始下载数据,将线程1下载的数据储存在对应的第一缓存文件中,线程2下载的数据储存在对应的第二缓存文件中。当终端检测到线程1、线程2同时完成对应的数据传输时,此时线程1下载的数据“0123456789ABCDEFGH”储存在对应的第一缓存文件中,线程2下载的数据“IJKLMNOPQRSTUVWXYZ”储存在对应的第二缓存文件中,则终端将第一缓存文件储存至第一下载文件中,将第二缓存文件储存至第二下载文件中,即第一下载文件中的数据为“0123456789ABCDEFGH”,第二下载文件中数据为“IJKLMNOPQRSTUVWXYZ”。终端将第一下载文件、第二下载文件进行合并,得到目标文件对应的数据为“0123456789ABCDEFGH IJKLMNOPQRSTUVWXYZ”。由此使得,由于每次线程1和线程2的下载位置用site1和site2保存并且线程1和线程2下载后的文件用test1.txt和test2.txt两个中间文件保存,因而当下载文件时,即使FTP服务器或者客户端碰到异常状态时,即网络异常或掉电异常断开时,线程1和线程2可以在保存好的下载位置继续下载,不需要重新从头开始下载文件,无需在服务端创建倒序文件进行传输,有效的避免了传统文件传输方式中繁琐的操作流程和大量时间的耗费,能够保证文件传输的准确性。
在一个实施例中,将每个线程传输的数据进行合并,得到目标文件对应的数据的步骤包括:
将第一下载文件、第二下载文件进行合并,得到目标文件对应的数据。其中,第一下载文件用于储存目标文件对应的字节数据的首部,第二下载文件用于储存目标文件对应的字节数据的尾部。
当终端对目标文件的所有字节数据下载完毕之后,终端将每个线程传输的数据进行合并,得到目标文件对应的数据。具体的,终端将第一下载文件、第二下载文件进行合并,得到目标文件对应的数据。其中,第一下载文件用于储存目标文件对应的包含首部的字节数据,第二下载文件用于储存目标文件对应的包含尾部的字节数据,即将第一下载文件的整体字节数据作为目标文件的首部,将第二下载文件的整体字节数据作为目标文件的尾部。例如,第一下载文件中的数据为“0123456789ABCDEFGH”,第二下载文件中数据为“IJKLMNOPQRSTUVWXYZ”则终端将第一下载文件的整体字节数据作为目标文件的首部,终端将第二下载文件的整体字节数据作为目标文件的尾部,即终端将第二下载文件拼接至第一下载文件的尾部,得到合并后的目标文件对应的数据为“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”。由此使得,利用第一下载文件和第二下载文件(即test1.txt、text2.txt)作为最终目标文件的首尾两部分,保证两线程下载的文件内容不会改变,第一下载文件中储存的是包含目标文件的首部,第二下载文件中储存的是包含目标文件的尾部,最后合并成目标文件,保证了目标文件中字节数据的顺序不会变,能够保证文件传输的准确性,同时有效的提高了文件的传输效率,提升了大文件的下载速度。
在一个实施例中,如图7所示,提供了一种文件传输方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤702,获取目标文件的大小对应的字节数据。
步骤704,将字节数据与预设阈值进行比较。
步骤706,当字节数据大于预设阈值时,开启双线程对目标文件进行传输;当第一线程优先完成对应的数据传输时,则暂停第一线程、第二线程传输数据,将第一缓存文件和第二缓存文件储存至第一下载文件中。
步骤708,获取第二线程对应的剩余传输字节数据。
步骤710,当剩余传输数据字节数据大于预设阈值时,则继续调用第一线程、第二线程对剩余传输数据字节数据进行传输,直到目标文件的剩余传输字节数据小于预设阈值。
步骤712,当目标文件的剩余传输字节数据小于或等于预设阈值时,开启单线程对目标文件进行传输。
步骤714,将每个线程传输的数据进行合并,得到目标文件对应的数据。
当终端获取目标文件的大小对应的字节数据之后,终端将上述获取到的字节数据与预设阈值进行比较。当终端检测到目标文件的字节数据大于预设阈值时,终端开启双线程对目标文件进行传输,终端可以调用第一线程、第二线程同时开始进行数据传输。例如,假设用户需要下载的目标文件test.txt的内容为0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ。终端可以向服务器发送SIZE<test.txt>命令获取目标文件的大小,即服务器根据接收到的SIZE<test.txt>命令,返回目标文件的大小对应的字节数36至终端,终端将获取目标文件的大小对应的字节数据36个字节数与预设阈值进行比较,比如预设阈值为10个字节,当终端检测到目标文件的字节数据36大于预设阈值10时,则终端开启双线程对目标文件进行传输。终端可以按照预设规则对目标文件的字节数据进行平均分配,计算得到线程1下载字节数据的第一起始位置site1=1为第一个字节,第一结束位置site10为第18个字节;线程2下载字节数据的第二起始位置site2为第19个字节,第二结束位置site20为第36个字节。终端调用线程1从site1的位置、线程2从site2的位置同时开始下载数据,将线程1下载的数据储存在对应的第一缓存文件中,线程2下载的数据储存在对应的第二缓存文件中。当终端检测到线程1优先完成对应的数据传输时,则终端暂停线程1、线程2传输数据,此时,线程1下载的数据“0123456789ABCDEFGH”储存在对应的第一缓存文件中,线程2下载的数据“IJKL”储存在对应的第二缓存文件中。终端将第一缓存文件“0123456789ABCDEFGH”和第二缓存文件“IJKL”进行合并,得到数据为“0123456789ABCDEFGH IJKL”,终端将上述合并后的数据储存至第一下载文件中,并清除第一缓存文件和第二缓存文件中的内容。即第一下载文件中储存的数据为“0123456789ABCDEFGH IJKL”,第一缓存文件和第二缓存文件中没有数据。进一步的,终端获取线程2对应的剩余传输字节数据为“MNOPQRSTUVWXYZ”14个字节。当终端检测上述剩余传输数据字节数据14大于预设阈值10时,则终端继续调用第一线程、第二线程对剩余传输数据字节数据进行传输,终端可以循环上述双线程的传输流程直到目标文件的剩余传输字节数据小于预设阈值。具体的,终端可以按照预设规则对目标文件的剩余传输字节数14字节进行平均分配,计算得到线程1下载字节数据的第一起始位置site1=23为第23个字节,第一结束位置site10为第29个字节;线程2下载字节数据的第二起始位置site2为第30个字节,第二结束位置site20为第36个字节。终端调用线程1从site1的位置、线程2从site2的位置同时开始下载数据,将线程1下载的数据储存在对应的第一缓存文件中,线程2下载的数据储存在对应的第二缓存文件中。当终端检测到线程1优先完成对应的数据传输时,则终端暂停线程1、线程2传输数据,此时,线程1下载的数据“MNOPQRS”储存在对应的第一缓存文件中,线程2下载的数据“TUV”储存在对应的第二缓存文件中。终端将第一缓存文件“MNOPQRS”和第二缓存文件“TUV”与第一下载文件中已储存数据的尾部进行拼接合并,并清除第一缓存文件和第二缓存文件中的内容。即第一下载文件中储存的数据为“0123456789ABCDEFGH IJKL MNOPQRS TUV”,第一缓存文件和第二缓存文件中没有数据。进一步的,终端获取上述线程2对应的剩余传输字节数据为“WXYZ”4个字节。当终端检测上述剩余传输数据字节数据4小于预设阈值10时,则终端开启单线程对目标文件的剩余数据进行传输,即终端只调用线程1对剩余传输数据字节数据“WXYZ”进行传输,终端将线程1下载的数据“WXYZ”储存在对应的第一缓存文件中,终端将第一缓存文件“WXYZ”储存至第二下载文件的尾部,并清除第一缓存文件中的内容,即第二下载文件中储存的数据为“WXYZ”。进一步的。终端将第一下载文件中储存的数据“0123456789ABCDEFGH IJKL MNOPQRS TUV”与第二下载文件中储存的数据“WXYZ”进行首部尾部合并,即终端将第一下载文件中储存数据的尾部与第二下载文件中储存数据的头部进行拼接,得到目标文件对应的数据为“0123456789ABCDEFGH IJKL MNOPQRS TUV WXYZ”。由此使得根据目标文件的大小,动态调节目标文件的传输方式,无需在服务端创建倒序文件进行传输,有效的避免了传统文件传输方式中繁琐的操作流程和大量时间的耗费,在不更改服务器的内容,不多占用服务器空间的前提下,能够实现大文件的快速下载,即使当服务器或者客户端碰到异常状态时,即网络异常或异常断开时,也能够支持在网络断开前的下载位置继续进行数据下载,从而有效的提高了文件的传输效率,提升了大文件的下载速度。
应该理解的是,虽然图1-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种文件传输装置,包括:获取模块802、比较模块804、传输模块806和合并模块808,其中:
获取模块802,用于获取目标文件的大小对应的字节数据。
比较模块804,用于将字节数据与预设阈值进行比较。
传输模块806,用于当字节数据大于预设阈值时,开启双线程对目标文件进行传输,直到目标文件的剩余传输字节数据小于或等于预设阈值;当目标文件的剩余传输字节数据小于或等于预设阈值时,开启单线程对目标文件进行传输。
合并模块808,用于将每个线程传输的数据进行合并,得到目标文件对应的数据。
在一个实施例中,该装置还包括:调用模块。
获取模块还用于获取第一线程下载字节数据的第一起始位置;获取第二线程下载字节数据的第二起始位置,第二起始位置位于第一下起始位置之后。调用模块用于调用第一线程从第一下载数据位置开始进行数据传输,将第一线程下载的数据储存在对应的第一缓存文件中;调用第二线程从第二下载数据位置开始进行数据传输,将第二线程下载的数据储存在对应的第二缓存文件中。
在一个实施例中,该装置还包括:储存模块。
储存模块用于当第一线程优先完成对应的数据传输时,则暂停第一线程、第二线程传输数据,将第一缓存文件和第二缓存文件储存至第一下载文件中。获取模块还用于获取第二线程对应的剩余传输字节数据。调用模块还用于当剩余传输数据字节数据大于预设阈值时,则继续调用第一线程、第二线程对剩余传输数据字节数据进行传输,直到目标文件的剩余传输字节数据小于预设阈值。
在一个实施例中,储存模块还用于当第二线程优先完成对应的数据传输时,则暂停第一线程、第二线程传输数据,将第二缓存文件储存至第二下载文件中。获取模块还用于获取第一线程对应的剩余传输字节数据。调用模块还用于当剩余传输字节数据大于预设阈值时,则继续调用第一线程、第二线程对剩余传输字节数据进行传输,直到目标文件的剩余传输字节数据小于预设阈值。
在一个实施例中,储存模块还用于当第一线程、第二线程同时完成对应的数据传输时,则将第一缓存文件储存至第一下载文件中,将第二缓存文件储存至第二下载文件中。合并模块还用于将第一下载文件、第二下载文件进行合并,得到目标文件对应的数据。
在一个实施例中,合并模块还用于将第一下载文件、第二下载文件进行合并,得到目标文件对应的数据。其中,第一下载文件用于储存目标文件对应的字节数据的首部,第二下载文件用于储存目标文件对应的字节数据的尾部。
关于文件传输装置的具体限定可以参见上文中对于文件传输方法的限定,在此不再赘述。上述文件传输装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种文件传输方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述各个方法实施例的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种文件传输方法,所述方法包括:
获取目标文件的大小对应的字节数据;
将所述字节数据与预设阈值进行比较;
当所述字节数据大于预设阈值时,开启双线程对所述目标文件进行传输,直到所述目标文件的剩余传输字节数据小于或等于所述预设阈值;
当所述目标文件的剩余传输字节数据小于或等于所述预设阈值时,开启单线程对所述目标文件进行传输;
将每个线程传输的数据进行合并,得到所述目标文件对应的数据。
2.根据权利要求1所述的方法,其特征在于,所述当所述字节数据大于预设阈值时,开启双线程对所述目标文件进行传输包括:
获取第一线程下载所述字节数据的第一起始位置;
获取第二线程下载所述字节数据的第二起始位置;所述第二起始位置位于所述第一下起始位置之后;
调用所述第一线程从所述第一下载数据位置开始进行数据传输,将所述第一线程下载的数据储存在对应的第一缓存文件中;
调用所述第二线程从所述第二下载数据位置开始进行数据传输,将所述第二线程下载的数据储存在对应的第二缓存文件中。
3.根据权利要求2所述的方法,其特征在于,所述开启双线程对所述目标文件进行传输,还包括:
所述第一线程、第二线程同时开始进行数据传输;
当所述第一线程优先完成对应的数据传输时,则暂停所述第一线程、第二线程传输数据,将所述第一缓存文件和所述第二缓存文件储存至第一下载文件中;
获取所述第二线程对应的剩余传输字节数据;
当所述剩余传输数据字节数据大于所述预设阈值时,则继续调用所述第一线程、第二线程对所述剩余传输数据字节数据进行传输,直到所述目标文件的剩余传输字节数据小于所述预设阈值。
4.根据权利要求2所述的方法,其特征在于,所述开启双线程对所述目标文件进行传输,还包括:
当所述第二线程优先完成对应的数据传输时,则暂停所述第一线程、第二线程传输数据,将所述第二缓存文件储存至第二下载文件中;
获取所述第一线程对应的剩余传输字节数据;
当所述剩余传输字节数据大于预设阈值时,则继续调用所述第一线程、第二线程对所述剩余传输字节数据进行传输,直到所述目标文件的剩余传输字节数据小于预设阈值。
5.根据权利要求2所述的方法,其特征在于,所述开启双线程对所述目标文件进行传输,还包括:
当所述第一线程、第二线程同时完成对应的数据传输时,则将所述第一缓存文件储存至第一下载文件中,将所述第二缓存文件储存至第二下载文件中;
将所述第一下载文件、所述第二下载文件进行合并,得到所述目标文件对应的数据。
6.根据权利要求3或4所述的方法,其特征在于,所述将每个线程传输的数据进行合并,得到所述目标文件对应的数据包括:
将所述第一下载文件、所述第二下载文件进行合并,得到所述目标文件对应的数据;其中,所述第一下载文件用于储存所述目标文件对应的字节数据的首部,所述第二下载文件用于储存所述目标文件对应的字节数据的尾部。
7.一种文件传输装置,其特征在于,所述装置包括:
获取模块,用于获取目标文件的大小对应的字节数据;
比较模块,用于将所述字节数据与预设阈值进行比较;
传输模块,用于当所述字节数据大于预设阈值时,开启双线程对所述目标文件进行传输,直到所述目标文件的剩余传输字节数据小于或等于所述预设阈值;当所述目标文件的剩余传输字节数据小于或等于所述预设阈值时,开启单线程对所述目标文件进行传输;
合并模块,用于将每个线程传输的数据进行合并,得到所述目标文件对应的数据。
8.根据权利要求7的文件传输装置,其特征在于,所述装置还包括:
获取模块,用于获取第一线程下载所述字节数据的第一起始位置;获取第二线程下载所述字节数据的第二起始位置;所述第二起始位置位于所述第一下起始位置之后;
调用模块,用于调用所述第一线程从所述第一下载数据位置开始进行数据传输,将所述第一线程下载的数据储存在对应的第一缓存文件中;调用所述第二线程从所述第二下载数据位置开始进行数据传输,将所述第二线程下载的数据储存在对应的第二缓存文件中。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010621881.4A CN111787105B (zh) | 2020-07-01 | 2020-07-01 | 文件传输方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010621881.4A CN111787105B (zh) | 2020-07-01 | 2020-07-01 | 文件传输方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111787105A true CN111787105A (zh) | 2020-10-16 |
CN111787105B CN111787105B (zh) | 2023-07-07 |
Family
ID=72760489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010621881.4A Active CN111787105B (zh) | 2020-07-01 | 2020-07-01 | 文件传输方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111787105B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114205654A (zh) * | 2021-12-15 | 2022-03-18 | 中国电信股份有限公司 | 数据处理系统、方法、装置、计算机可读存储介质及设备 |
CN115150383A (zh) * | 2021-03-31 | 2022-10-04 | 华为技术有限公司 | 文件发送方法、设备及计算机可读存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656756A (zh) * | 2009-09-17 | 2010-02-24 | 中国科学院声学研究所 | 一种发送速率自适应控制的文件传输方法及其系统 |
US20110131351A1 (en) * | 2009-11-30 | 2011-06-02 | Noeldner David R | Coalescing Multiple Contexts into a Single Data Transfer in a Media Controller Architecture |
CN103237049A (zh) * | 2013-03-18 | 2013-08-07 | 北京易华录信息技术股份有限公司 | 一种文件传输方法及装置 |
CN104244083A (zh) * | 2014-10-08 | 2014-12-24 | 联想(北京)有限公司 | 一种在线视频的下载方法及电子设备 |
CN104506950A (zh) * | 2014-12-29 | 2015-04-08 | 珠海全志科技股份有限公司 | 网络流媒体播放中的多线程下载方法、装置及下载设备 |
CN104767801A (zh) * | 2015-03-23 | 2015-07-08 | 上海大唐移动通信设备有限公司 | 一种两线程ftp的传输方法及系统 |
CN106550042A (zh) * | 2016-11-23 | 2017-03-29 | 广州优视网络科技有限公司 | 多线程下载方法和装置及计算设备 |
CN108600368A (zh) * | 2018-04-25 | 2018-09-28 | 青岛海信电器股份有限公司 | 一种hls网络视频下载优化方法及装置 |
CN109145588A (zh) * | 2018-07-27 | 2019-01-04 | 平安科技(深圳)有限公司 | 数据处理方法及装置 |
CN110855736A (zh) * | 2019-09-20 | 2020-02-28 | 深圳市有方科技股份有限公司 | 文件传输方法、文件传输设备及计算机可读存储介质 |
US20200162100A1 (en) * | 2018-11-19 | 2020-05-21 | Fungible, Inc. | Data striping for matching techniques in data compression accelerator of a data processing unit |
-
2020
- 2020-07-01 CN CN202010621881.4A patent/CN111787105B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656756A (zh) * | 2009-09-17 | 2010-02-24 | 中国科学院声学研究所 | 一种发送速率自适应控制的文件传输方法及其系统 |
US20110131351A1 (en) * | 2009-11-30 | 2011-06-02 | Noeldner David R | Coalescing Multiple Contexts into a Single Data Transfer in a Media Controller Architecture |
CN103237049A (zh) * | 2013-03-18 | 2013-08-07 | 北京易华录信息技术股份有限公司 | 一种文件传输方法及装置 |
CN104244083A (zh) * | 2014-10-08 | 2014-12-24 | 联想(北京)有限公司 | 一种在线视频的下载方法及电子设备 |
CN104506950A (zh) * | 2014-12-29 | 2015-04-08 | 珠海全志科技股份有限公司 | 网络流媒体播放中的多线程下载方法、装置及下载设备 |
CN104767801A (zh) * | 2015-03-23 | 2015-07-08 | 上海大唐移动通信设备有限公司 | 一种两线程ftp的传输方法及系统 |
CN106550042A (zh) * | 2016-11-23 | 2017-03-29 | 广州优视网络科技有限公司 | 多线程下载方法和装置及计算设备 |
CN108600368A (zh) * | 2018-04-25 | 2018-09-28 | 青岛海信电器股份有限公司 | 一种hls网络视频下载优化方法及装置 |
CN109145588A (zh) * | 2018-07-27 | 2019-01-04 | 平安科技(深圳)有限公司 | 数据处理方法及装置 |
US20200162100A1 (en) * | 2018-11-19 | 2020-05-21 | Fungible, Inc. | Data striping for matching techniques in data compression accelerator of a data processing unit |
CN110855736A (zh) * | 2019-09-20 | 2020-02-28 | 深圳市有方科技股份有限公司 | 文件传输方法、文件传输设备及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
R. RAJU ET.AL.: "File transfer speed-up by automatic thread assignment in FTP engine", 《2010 INTERNATIONAL CONFERENCE ON COMMUNICATION AND COMPUTATIONAL INTELLIGENCE (INCOCCI)》 * |
孟欣: "基于FTP的文件高效上传方法的研究与实现", 《中国优秀硕士学位论文全文数据库 (信息科技辑) 》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115150383A (zh) * | 2021-03-31 | 2022-10-04 | 华为技术有限公司 | 文件发送方法、设备及计算机可读存储介质 |
CN115150383B (zh) * | 2021-03-31 | 2023-07-07 | 华为技术有限公司 | 文件发送方法、设备及计算机可读存储介质 |
CN114205654A (zh) * | 2021-12-15 | 2022-03-18 | 中国电信股份有限公司 | 数据处理系统、方法、装置、计算机可读存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111787105B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11836135B1 (en) | Method and system for transparent database query caching | |
KR101707880B1 (ko) | 신축적 컴퓨팅 시스템 및 환경에서 안전한 서비스 제공자 이용 | |
US11860738B2 (en) | User authorization for file level restoration from image level backups | |
US9178940B2 (en) | System and method for detecting peer-to-peer network software | |
CN110602169B (zh) | 服务调用方法、装置、计算机设备和存储介质 | |
WO2015062339A1 (zh) | 远程应用程序运行的方法和装置 | |
WO2019127890A1 (zh) | 漏洞扫描方法、装置、计算机设备和存储介质 | |
CN112350861B (zh) | 日志获取方法、装置、计算机设备和存储介质 | |
CN110197075B (zh) | 资源访问方法、装置、计算设备以及存储介质 | |
CN112099979B (zh) | 一种访问控制方法、装置、计算机设备和存储介质 | |
CN109413153B (zh) | 数据爬取方法、装置、计算机设备和存储介质 | |
CN111787105B (zh) | 文件传输方法、装置、计算机设备和存储介质 | |
CN108256014B (zh) | 页面展示方法及装置 | |
WO2011086787A1 (ja) | 機密情報漏洩防止システム、機密情報漏洩防止方法及び機密情報漏洩防止プログラム | |
CN110045998B (zh) | 加载动态库的方法及装置 | |
CN103500108A (zh) | 系统内存访问方法、节点控制器和多处理器系统 | |
JP2018533092A (ja) | ネットワークリクエスト及びレスポンスの処理方法、端末、サーバ及び記憶媒体 | |
US20120191896A1 (en) | Circuitry to select, at least in part, at least one memory | |
CN111405077B (zh) | 域名切换方法、装置、计算机可读存储介质和计算机设备 | |
US9405603B2 (en) | Naming of nodes in net framework | |
CN112702362A (zh) | Tcp/ip协议栈的增强方法、装置、电子设备及存储介质 | |
CN110191203B (zh) | 实现服务器动态访问的方法及电子设备 | |
CN115098213A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN110430211B (zh) | 一种虚拟化云桌面系统及操作方法 | |
CN114024745A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |