文件拆分的方法、系统和存储介质技术方案

技术编号:31980110 阅读:21 留言:0更新日期:2022-01-20 01:36
本申请涉及一种文件拆分的方法、系统和存储介质,通过获取待拆分的源文件中每一行数据的关键数据;根据源文件中每一行数据的关键数据,从Map容器中获取对应的文件输出流对象对源文件进行拆分,其中,Map容器为文件输出流对象池,用于存储文件输出流对象,在拆分源文件时,无需频繁的创建、关闭文件输出流对象,提高了源文件的拆分效率。了源文件的拆分效率。了源文件的拆分效率。

【技术实现步骤摘要】
文件拆分的方法、系统和存储介质


[0001]本申请涉及计算机
,特别是涉及文件拆分的方法、系统和存储介质。

技术介绍

[0002]计算机运行时,由于存储介质的容量限制和网络传输能力限制等原因,需要对数据量较大的源文件进行拆分,也就是将源文件中的数据分别保存为多个数据量较小的拆分文件,以方便存储或传输。在相关技术中,可以通过逐行读取,不断的创建、关闭文件输出流对源文件进行拆分,但频繁的创建、关闭文件输出流,会导致性能低下,源文件拆分效率低;
[0003]目前针对相关技术中对源文件的拆分需要频繁的创建、关闭文件输出流,导致源文件拆分效率低的问题,尚未提出有效的解决方案。

技术实现思路

[0004]本申请实施例提供了一种文件拆分的方法、系统和存储介质,以至少解决相关技术中对源文件的拆分需要频繁的创建、关闭文件输出流,导致源文件拆分效率低的问题。
[0005]第一方面,本申请实施例提供了一种文件拆分的方法,所述方法包括:
[0006]获取待拆分的源文件中每一行数据的关键数据;
[0007]根据所述源文件中每一行数据的关键数据,从Map容器中获取对应的文件输出流对象对所述源文件进行拆分,直至拆分完所述源文件,其中,所述Map容器为文件输出流对象池,用于存储文件输出流对象。
[0008]在其中一些实施例中,所述获取待拆分的源文件中每一行数据的关键数据之前,所述方法还包括:
[0009]创建Map容器;
[0010]获取待拆分的源文件中每一行数据的关键数据,根据关键数据类型的数量创建同等数量的文件输出流对象,并将所述文件输出流对象与所述关键数据按映射关系保存到所述Map容器。
[0011]在其中一些实施例中,所述根据关键数据类型的数量创建同等数量的文件输出流对象,并将所述文件输出流对象与所述关键数据按映射关系保存到所述Map容器包括:
[0012]读取源文件中当前行数据的关键数据,判断所述关键数据是否存在于所述Map容器中;
[0013]若判断结果为否,则创建文件输出流对象,将新创建的文件输出流对象以及对应的关键数据按映射关系保存到所述Map容器;
[0014]若判断结果为是,则获取源文件中下一行数据的关键数据,并判断所述关键数据是否存在于所述Map容器中,根据判断结果重复上一执行步骤,直至读取完所述源文件。
[0015]在其中一些实施例中,根据所述源文件中每一行数据的关键数据,从Map容器中获取对应的文件输出流对象对所述源文件进行拆分包括:
[0016]读取源文件中当前行数据的关键数据,判断所述关键数据是否存在于所述Map容
器中;
[0017]若判断结果为是,则获取所述关键数据对应的文件输出流对象,通过所述文件输出流对象将当前行数据写入到对应的拆分文件中;
[0018]若判断结果为否,则创建文件输出流对象,通过新创建的文件输出流对象将当前行数据写入到对应的拆分文件中,并将新创建的文件输出流对象以及对应的关键数据按映射关系保存到所述Map容器;
[0019]获取源文件中下一行数据的关键数据,并判断所述关键数据是否存在于所述Map容器中,根据判断结果重复上一执行步骤,直至拆分完所述源文件。
[0020]在其中一些实施例中,将新创建的文件输出流对象以及对应的关键数据按映射关系保存到所述Map容器之前,所述方法还包括:
[0021]在所述Map容器中文件输出流对象的数量达到预设数量阈值的情况下,关闭所述新创建的文件输出流对象,或更新所述Map容器中的文件输出流对象。
[0022]在其中一些实施例中,在获取不到源文件中行数据的关键数据的情况下,所述方法还包括:
[0023]将获取不到关键数据的行数据记为目标行数据,为所述目标行数据创建目标文件输出流对象。
[0024]在其中一些实施例中,拆分完所述源文件之后,所述方法还包括:遍历所述Map容器,关闭所述Map容器中所有文件输出流对象。
[0025]在其中一些实施例中,获取所述源文件中每一行数据的关键数据包括:
[0026]根据所述源文件的格式,构造正则表达式,通过所述正则表达式获取每一行数据中的关键数据。
[0027]第二方面,本申请实施例提供了一种文件拆分的系统,所述系统包括获取模块和拆分模块,
[0028]所述获取模块,用于获取待拆分的源文件中每一行数据的关键数据;
[0029]所述拆分模块,用于根据所述源文件中每一行数据的关键数据,从Map容器中获取对应的文件输出流对象对所述源文件进行拆分,其中,所述Map容器为文件输出流对象池,用于存储文件输出流对象。
[0030]第三方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的文件拆分的方法。
[0031]相比于相关技术,本申请实施例提供的文件拆分的方法,通过获取待拆分的源文件中每一行数据的关键数据;根据源文件中每一行数据的关键数据,从Map容器中获取对应的文件输出流对象对源文件进行拆分,其中,Map容器为文件输出流对象池,用于存储文件输出流对象,在拆分源文件时,无需频繁的创建、关闭文件输出流对象,提高了源文件拆分的效率。
附图说明
[0032]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0033]图1是根据本申请实施例的文件拆分的方法的流程图;
[0034]图2是根据本申请实施例的文件拆分的方法的示意图;
[0035]图3是根据本申请实施例的另一种文件拆分的方法的示意图;
[0036]图4是根据本申请实施例的文件拆分的系统的结构框图。
具体实施方式
[0037]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的
技术实现思路
的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
[0038]在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
[0039]除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种文件拆分的方法,其特征在于,所述方法包括:获取待拆分的源文件中每一行数据的关键数据;根据所述源文件中每一行数据的关键数据,从Map容器中获取对应的文件输出流对象对所述源文件进行拆分,直至拆分完所述源文件,其中,所述Map容器为文件输出流对象池,用于存储文件输出流对象。2.根据权利要求1所述的方法,其特征在于,所述获取待拆分的源文件中每一行数据的关键数据之前,所述方法还包括:创建Map容器;获取待拆分的源文件中每一行数据的关键数据,根据关键数据类型的数量创建同等数量的文件输出流对象,并将所述文件输出流对象与所述关键数据按映射关系保存到所述Map容器。3.根据权利要求2所述的方法,其特征在于,所述根据关键数据类型的数量创建同等数量的文件输出流对象,并将所述文件输出流对象与所述关键数据按映射关系保存到所述Map容器包括:读取源文件中当前行数据的关键数据,判断所述关键数据是否存在于所述Map容器中;若判断结果为否,则创建文件输出流对象,将新创建的文件输出流对象以及对应的关键数据按映射关系保存到所述Map容器;若判断结果为是,则获取源文件中下一行数据的关键数据,并判断所述关键数据是否存在于所述Map容器中,根据判断结果重复上一执行步骤,直至读取完所述源文件。4.根据权利要求1所述的方法,其特征在于,根据所述源文件中每一行数据的关键数据,从Map容器中获取对应的文件输出流对象对所述源文件进行拆分包括:读取源文件中当前行数据的关键数据,判断所述关键数据是否存在于所述Map容器中;若判断结果为是,则获取所述关键数据对应的文件输出流对象,通过所述文件输出流对象将当前行数据写入到对应的拆分文件中;若判断结果为否,则创建文件输出流对象,通过新创建的文件输出流对象将当前行数据写入到对...

【专利技术属性】
技术研发人员:程景陈晨
申请(专利权)人:杭州星犀科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1