一种文件传输方法及系统转让专利

申请号 : CN201210260325.4

文献号 : CN102790771B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李守鹏姚建萍闫鹏车帅徐屏见

申请人 : 山东中创软件商用中间件股份有限公司

摘要 :

本发明提供了一种文件传输方法及系统,可以将待传输文件划分为多个子文件,然后启动多个线程传输多个子文件并将传输成功的子文件的信息记录至记录文件中。由于采用多线程同时传输待传输文件,因此,文件传输速度较快。如果网络发生故障导致待传输文件不能正常传输,那么当网络恢复正常时,只需根据记录文件记录的子文件的信息确定未传输的子文件并传输即可,本发明不用重传文件,实现了断点续传。因此,本发明的文件传输效率高,当需要重启文件传输时,也不用长时间占用传输网络。

权利要求 :

1.一种文件传输方法,其特征在于,包括:将待传输文件划分为多个子文件;

启动多个线程传输所述多个子文件;

将传输成功的子文件的信息记录至记录文件中;

其中,所述将待传输文件划分为多个子文件的步骤包括:将待传输文件划分为多个子文件并为所述多个子文件中的每一个子文件分配唯一的子文件标识;

其中,在启动多个线程传输所述多个子文件时,将子文件的标识写入与所述线程相对应的消息队列中;

其中,当所述待传输文件传输失败时,根据所述记录文件中传输成功的子文件的信息,启动未传输成功的子文件的传输;

其中,当所述待传输文件传输失败时,根据所述记录文件中传输成功的子文件的信息,启动未传输成功的子文件的传输,具体包括:从消息队列中获取子文件的标识,查询标识是否记录在记录文件中,如果是,则将标识从消息队列中删除,如果否,则获取与标识相对应的子文件并发送到接收方;

所述子文件的信息为所述子文件标识。

2.根据权利要求1所述的方法,其特征在于,还包括:当从所述记录文件中确定所述多个子文件均传输成功后,对所述多个子文件进行合并处理,以还原所述待传输文件。

3.一种文件传输系统,其特征在于,包括:划分模块、传输模块和记录模块;

所述划分模块,用于将待传输文件划分为多个子文件;

所述传输模块,用于启动多个线程传输所述多个子文件;

所述记录模块,用于将传输成功的子文件的信息记录至记录文件中;

其中,还包括:续传模块;

所述续传模块,用于当所述待传输文件传输失败时,根据所述记录文件中传输成功的子文件的信息,启动未传输成功的子文件的传输;

其中,所述划分模块包括:第一划分子模块和标识分配子模块;

所述第一划分子模块,用于将待传输文件划分为多个子文件;

所述标识分配子模块,用于为所述多个子文件中的每一个子文件分配唯一的子文件标识;

其中,在启动多个线程传输所述多个子文件时,将子文件的标识写入与所述线程相对应的消息队列中;

其中,当所述待传输文件传输失败时,根据所述记录文件中传输成功的子文件的信息,启动未传输成功的子文件的传输,具体包括:从消息队列中获取子文件的标识,查询标识是否记录在记录文件中,如果是,则将标识从消息队列中删除,如果否,则获取与标识相对应的子文件并发送到接收方;

所述子文件的信息为所述子文件标识。

4.根据权利要求3所述的系统,其特征在于,还包括:合并模块;

所述合并模块,用于当从所述记录文件中确定所述多个子文件均传输成功后,对所述多个子文件进行合并处理,以还原所述待传输文件。

说明书 :

一种文件传输方法及系统

技术领域

[0001] 本发明涉及数据传输技术领域,尤其涉及一种文件传输方法及系统。

背景技术

[0002] 目前,数据集成总线负责各业务系统的业务主数据的统一集成,对外提供统一的共享数据视图,数据集成总线的应用降低了各系统的耦合度,降低各系统的复杂性。
[0003] 然而,数据集成总线最大的挑战是在分布式环境中的应用。在分布式环境中,由于网络环境比较复杂,且网络中的节点较多,因此,当传输大文件时,存在文件传输速度慢的问题,而且,如果在大文件的传输过程中网络发生故障,那么,当网络恢复正常时需要重新传输大文件。因此,现有的文件传输技术的传输效率较低,当需要重启文件传输时,又需要长时间占用传输网络。

发明内容

[0004] 有鉴于此,本发明提供了一种文件传输方法及系统,用以解决现有的文件传输技术的传输效率较低,当需要重启文件传输时,又需要长时间占用传输网络的问题,其技术方案如下:
[0005] 一种文件传输方法,包括:
[0006] 将待传输文件划分为多个子文件;
[0007] 启动多个线程传输所述多个子文件;
[0008] 将传输成功的子文件的信息记录至记录文件中。
[0009] 可选的,上述方法,还包括:
[0010] 当所述待传输文件传输失败时,根据所述记录文件中的传输成功的子文件的信息,启动未传输成功的子文件的传输。
[0011] 所述将待传输文件划分为多个子文件的步骤包括:
[0012] 将待传输文件划分为多个子文件并为所述多个子文件中的每一个子文件分配唯一的子文件标识。
[0013] 所述子文件的信息为所述子文件标识。
[0014] 可选的,上述方法还包括:
[0015] 当从所述记录文件中确定所述多个子文件均传输成功后,对所述多个子文件进行合并处理,以还原所述待传输文件。
[0016] 一种文件传输系统,包括:划分模块、传输模块和记录模块;
[0017] 所述划分模块,用于将待传输文件划分为多个子文件;
[0018] 所述传输模块,用于启动多个线程传输所述多个子文件;
[0019] 所述记录模块,用于将传输成功的子文件的信息记录至记录文件。
[0020] 可选的,上述的文件传输系统还包括:续传模块;
[0021] 所述续传模块,用于当所述待传输文件传输失败时,根据所述记录文件中传输成功的子文件的信息,启动未传输成功的子文件的传输。
[0022] 所述划分模块包括:第一划分子模块和标识分配子模块;
[0023] 所述第一划分子模块,用于将待传输文件划分为多个子文件;
[0024] 所述标识分配子模块,用于为所述多个子文件中的每一个子文件分配唯一的子文件标识。
[0025] 所述子文件的信息为所述子文件标识。
[0026] 可选的,上述的文件传输系统还包括:合并模块;
[0027] 所述合并单元,用于当从所述记录文件中确定所述多个子文件均传输成功后,对所述多个子文件进行合并处理,以还原所述待传输文件。
[0028] 本发明提供的文件传输方法及系统,将待传输文件划分为多个子文件,启动多个线程传输多个子文件。由于采用多线程同时传输待传输文件,因此,文件传输速度较快。同时,本发明将传输成功的子文件的信息记录在记录文件中。如果网络发生故障导致待传输文件不能正常传输,那么当网络恢复正常时,只需根据记录文件记录的子文件的信息确定未传输的子文件并传输即可。本发明不用重传待传输文件,实现了断点续传。因此,本发明的文件传输效率较高,当需要重启文件传输时,也不需要长时间占用传输网络。

附图说明

[0029] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0030] 图1为本发明实施例一提供的文件传输方法的流程示意图;
[0031] 图2为本发明实施例二提供的文件传输方法的流程示意图;
[0032] 图3为本发明实施例三提供的文件传输系统的结构示意图;
[0033] 图4为本发明实施例四提供的文件传输系统的结构示意图。

具体实施方式

[0034] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0035] 实施例一
[0036] 本发明实施例一提供了一种文件传输方法,图1为该方法的流程示意图,本发明实施例一提供的方法可以包括:
[0037] S11:将待传输文件划分为多个子文件。
[0038] 在本实施例中,将待传输文件划分为多个子文件可以具体为:将待传输文件平均分为多个子文件,即每个子文件大小相同,且子文件的大小是由用户设定的,同时,为每个子文件分配一个唯一的标识,每个子文件的标识可以为子文件的序列号。本实施例并不限定划分的每个子文件的大小相同,也可不同,只要是将待传输文件划分为多个子文件都是本发明保护的范围。
[0039] S12:启动多个线程传输多个子文件。
[0040] 在本实施例,将多个子文件平均分配给多个线程,例如,子文件的数量为10个,启动5个线程传输10个子文件,每个线程传输两个子文件,如果子文件为11个,则其中1个线程传输3个子文件,其余4个线程,每个线程传输两个子文件。当然,本实施例并不限定于此,只要是将多个子文件分配给多个线程同时传输都是本发明保护的范围。
[0041] S13:将传输成功的子文件的信息记录至记录文件中。
[0042] 在本实施例中,记录文件可以是预先建立的,专门用于记录传输成功的子文件的信息。记录文件记录的子文件的信息可以为:为每个子文件分配的唯一的标识,如子文件的序列号。本领域技术人员可以理解的,记录文件也可以在第一次记录传输成功的子文件的信息时建立,而不用预先建立。
[0043] 在上述本发明提供的实施例的基础上,现列举一具体实例说明文件传输的具体过程:
[0044] 将待传输文件F划分为10个子文件,分别为子文件F1、F2、F3、F4、F5、F6、F7、F8、F9和F10,并为每个子文件分配一个唯一性标识,分别为:I1、I2、I3、I4、I5、I6、I7、I8、I9和I10。
[0045] 启动5个线程T1、T2、T3、T4和T5同时传输子文件F1、F2、F3、F4、F5、F6、F7、F8、F9和F10,线程T1传输子文件F1、F2,线程T2传输子文件F3、F4,线程T3传输子文件F5、F6,线程T4传输子文件F7、F8,线程T5传输子文件F9、F10,当线程T1成功传输子文件F1时,将子文件F1的标识I1记录至记录文件中,其它子文件同样如此,只要成功传输,就将其标识记录至记录文件中。
[0046] 启动线程T1、T2、T3、T4和T5传输子文件F1、F2、F3、F4、F5、F6、F7、F8、F9和F10时,子文件F1、F2的标识I1、I2被写入与线程T1对应的消息队列Q1中,相应的,子文件F3、F4的标识I3、I4被写入与线程T2对应的消息队列Q2中,子文件F5、F6的标识I5、I6被写入与线程T3对应的消息队列Q3中,子文件F7、F8的标识I7、I8被写入与线程T4对应的消息队列Q4中,子文件F1、F2的标识I9、I10被写入与线程T5对应的消息队列Q5中。
[0047] 下面以其中一个线程T1传输子文件F1、F2为例说明线程传输子文件的具体过程:从消息队列Q1中获取子文件F1的标识I1,查询标识I1是否记录在记录文件中,如果是,则将标识I1从消息队列中删除,如果否,则获取与标识I1对应的子文件F1并发送至接收方,当接收方成功接收子文件F1时,将标识I1记录至记录文件中,同时将标识I1从消息队列中删除,再从消息队列Q1中获取子文件F2的标识I2,查询标识I2是否记录在记录文件中,如果是,则将标识I2从消息队列中删除,如果否,则获取与标识I2对应的子文件F2并发送至接收方,当接收方成功接收子文件F2时,将标识I2记录至记录文件中,同时将标识I2从消息队列中删除。
[0048] 同样以线程T1传输子文件F1、F2为例,如果当线程T1传输子文件F2时,网络发生故障,此时,子文件F2的传输中断,由于子文件F2未成功传输,因此子文件F2的标识I2也就未在记录文件中记录,当网络恢复正常时,通过查询记录文件可得知哪些子文件已传输成功,那些子文件传输失败或未传输,从而进一步获取未传输或传输失败的子文件的标识,采用上述过程继续传输。
[0049] 本发明实施例一提供的文件传输方法,将待传输文件划分为多个子文件,启动多个线程传输多个子文件。由于采用多线程同时传输待传输文件,因此,文件传输速度较快。同时,本发明将传输成功的子文件的信息记录在记录文件中。如果网络发生故障导致待传输文件不能正常传输,那么当网络恢复正常时,只需根据记录文件记录的子文件的信息确定未传输的子文件并传输即可。本发明不用重传待传输文件,实现了断点续传。因此,本发明的文件传输效率较高,当需要重启文件传输时,也不需要长时间占用传输网络。
[0050] 实施例二
[0051] 本发明实施例二提供了一种文件传输方法,图2为该方法的流程示意图,本发明实施例二提供的文件传输方法除了包括实施例一的步骤S11-S13之外,还可以包括:
[0052] S14:判断待传输文件是否传输成功,如果否,则执行步骤S15;如果是,则执行步骤S16。
[0053] S15:根据记录文件中的传输成功的子文件的信息,启动未传输成功的子文件的传输,然后转入步骤S14。
[0054] S16:对多个子文件进行合并处理,以还原待传输文件。
[0055] 在本实施例中,每个子文件通过offset和blocksize两个属性标识,其中offset标识子文件在待传输文件中的起始位置,blocksize标识子文件的大小。当子文件全部传输成功后,根据每个子文件的offset和blocksize将子文件合并,以还原待传输文件。
[0056] 当成功还原待传输文件后,本发明实施例二提供的方法还可以包括:
[0057] S17:将记录文件删除。
[0058] 本发明实施例二提供的文件传输方法,将待传输文件划分为多个子文件,启动多个线程传输多个子文件。由于采用多线程同时传输待传输文件,因此,文件传输速度较快。同时,本发明将传输成功的子文件的信息记录在记录文件中。如果网络发生故障导致待传输文件不能正常传输,那么当网络恢复正常时,只需根据记录文件记录的子文件的信息确定未传输的子文件并传输即可。本发明不用重传待传输文件,实现了断点续传。因此,本发明的文件传输效率较高,当需要重启文件传输时,也不需要长时间占用传输网络。
[0059] 实施例三
[0060] 本发明实施例三提供了一种文件传输系统,图3为该系统的结构示意图,本发明实施例三提供的文件传输系统可以包括:划分模块11、传输模块12和记录模块13。
[0061] 其中,划分模块11,用于将待传输文件划分为多个子文件;传输模块12,用于启动多个线程传输多个子文件;记录模块13,用于将传输成功的子文件的信息记录至记录文件中。
[0062] 本发明实施例三提供的文件传输系统,将待传输文件划分为多个子文件,启动多个线程传输多个子文件。由于采用多线程同时传输待传输文件,因此,文件传输速度较快。同时,本发明将传输成功的子文件的信息记录在记录文件中。如果网络发生故障导致待传输文件不能正常传输,那么当网络恢复正常时,只需根据记录文件记录的子文件的信息确定未传输的子文件并传输即可。本发明不用重传待传输文件,实现了断点续传。因此,本发明的文件传输效率较高,当需要重启文件传输时,也不需要长时间占用传输网络。
[0063] 实施例四
[0064] 本发明实施例四提供了一种文件传输系统,图4为该系统的结构示意图,与实施例三不同的是,本发明实施例四提供的文件传输系统除了包括划分模块11、传输模块12和记录模块13之外,还可以包括:续传模块14。
[0065] 其中,续传模块14,用于当待传输文件传输失败时,根据记录文件中传输成功的子文件的信息,启动未传输成功的子文件的传输。
[0066] 在本实施例中,划分模块11包括:第一划分子模块和标识分配子模块,其中,第一划分子模块,用于将待传输文件划分为多个子文件,标识分配子模块,用于为多个子文件中的每一个子文件分配唯一的子文件标识。子文件的信息为子文件标识。
[0067] 本实施例中的文件传输系统还可以包括合并模块15,用于当从记录文件中确定多个子文件均传输成功后,对多个子文件进行合并处理,以还原所述待传输文件。
[0068] 此外,本发明实施例四提供的文件传输系统还可以包括:当合并模块15成功还原待传输文件后,将记录文件删除的删除模块16。
[0069] 本发明实施例四提供的文件传输系统,将待传输文件划分为多个子文件,启动多个线程传输多个子文件。由于采用多线程同时传输待传输文件,因此,文件传输速度较快。同时,本发明将传输成功的子文件的信息记录在记录文件中。如果网络发生故障导致待传输文件不能正常传输,那么当网络恢复正常时,只需根据记录文件记录的子文件的信息确定未传输的子文件并传输即可。本发明不用重传待传输文件,实现了断点续传。因此,本发明的文件传输效率较高,当需要重启文件传输时,也不需要长时间占用传输网络。
[0070] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0071] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0072] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0073] 本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0074] 本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0075] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
[0076] 以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。