本发明涉及电信业务支撑技术领域,尤其是涉及一种基于jdk流程处理的通用文件处理方法及系统。
背景技术:
在电信行业的服务开发过程中,多种业务场景如批量业务、文件接口等,需要对各种不同格式的文件进行处理。
目前在电信业务开发过程中,存在文件处理重复造轮子的现象,每次遇到文件处理时,都会进行一次开发,因而不能将主要的开发设计精力集中在业务逻辑本身;由于每次开发的业务处理逻辑多样,遇到的维护问题也比较多样等,浪费了大量人力。
技术实现要素:
针对上述问题,本发明提供了一种基于jdk流程处理的通用文件处理方法及系统,将与业务无关的文件处理逻辑独立出来,并通过配置实现个性化文件读取、检验、文件内容入库及结果文件创建等功能。
为实现上述目的,本发明提供了一种基于jdk流程处理的通用文件处理方法,包括:
保存待处理文件的配置信息;其中,配置信息包括文件类型;
根据所述待处理文件的文件类型匹配待处理文件的读取方法,基于所述读取方法解析并获取待处理文件的行内容;
对获取的所述行内容进行校验;
根据结果文件格式需求匹配结果文件的创建方法,并创建结果文件。
作为本发明的进一步改进,所述保存待处理文件的配置信息,包括:
通过构造函数将待处理文件配置信息从数据库保存到内存中。
作为本发明的进一步改进,所述读取方法采用jdk支持的流式读取。
作为本发明的进一步改进,所述基于读取方法解析并获取待处理文件的行内容,包括:
获取的行内容为stream格式的行内容。
作为本发明的进一步改进,
当待处理文件为文本文件时,通过bufferedreader.lines语句获取待处理文件配置信息中的行字符串,根据所述行字符串中的列分隔符分割字符串为列数组,得到行内容;
当待处理文件为excel文件时,基于poi工具类解析excel文件,定义行遍历器,通过行遍历器获取行内容。
作为本发明的进一步改进,所述对获取的行内容进行校验,包括:
根据预设的文件配置表中对各项内容的要求,依次对行内容逐行逐列进行校验,若校验均通过则待处理文件处理成功;若校验某一项不通过,则待处理文件处理失败。
作为本发明的进一步改进,校验的内容包括:必填项验证、字母大小写校对和列正则表达式的匹配。
作为本发明的进一步改进,所述根据结果文件格式需求匹配结果文件创建的抽象方法,并获取结果文件,包括:
当结果文件要求为文本文件时,将校验后的所述行内容中每行信息添加列分隔符合并为一个字符串,并添加换行符,循环写入文本文件;
当结果文件要求为excel文件时,基于pio工具类将校验后的内容循环写入excel文件。
作为本发明的进一步改进,还包括:根据数据库存储结构要求对结果文件进行行列映射转换并入库。
本发明还提供了一种实现如上所述的方法的系统,包括:数据缓存模块、文件读取模块、文件校验模块和结果输出模块;
所述数据缓存模块,用于:
保存待处理文件的配置信息;其中,配置信息包括文件类型;
所述文件读取模块,用于:
根据待处理文件的文件类型匹配待处理文件的读取方法,基于所述读取方法解析待处理文件的行内容;
所述文件校验模块,用于:
对获取的所述行内容进行校验;
所述结果输出模块,用于:
根据结果文件格式需求匹配结果文件的创建方法,创建结果文件。
与现有技术相比,本发明的有益效果为:
本发明将与业务无关的文件处理逻辑独立出来,通过配置一种通用文件处理方法,根据文件类型判断匹配不同的文件读取方法,进而实现对不同格式文件的读取、校验、创建结果文件及文件内容入库;同时文件处理中使用jdk支持的流式读取,提高了文件处理速度。
附图说明
图1为本发明一种实施例公开的基于jdk流程处理的通用文件处理方法流程图;
图2为本发明一种实施例公开的实现基于jdk流程处理的通用文件处理方法的系统示意图;
图3为本发明一种实施例公开的配置表中文件定义表展示图;
图4为本发明一种实施例公开的配置表中文件列定义表展示图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明做进一步的详细描述:
实施例:
如图1所示,本发明提供的一种基于jdk流程处理的通用文件处理方法,包括:
s1、保存待处理文件的配置信息;其中,配置信息包括文件类型;
进一步的,通过构造函数将待处理文件配置信息从数据库保存到内存中。
s2、根据待处理文件的文件类型匹配待处理文件的读取方法,基于读取方法解析并获取待处理文件的行内容;
其中,
读取方法采用jdk支持的流式读取;
获取的行内容为stream格式的行内容;
进一步的,
当待处理文件为文本文件时,通过bufferedreader.lines()获取待处理文件配置信息中的行字符串,根据行字符串中的列分隔符分割字符串为列数组,得到行内容;
当待处理文件为excel文件时,基于poi工具类解析excel文件,定义行遍历器,通过行遍历器获取行内容。
s3、对获取的行内容进行校验;
其中,
根据预设的文件配置表中对各项内容的要求,依次对行内容逐行逐列进行校验,若校验均通过则待处理文件处理成功;若校验某一项不通过,则待处理文件处理失败;
校验的内容包括:必填项验证、字母大小写校对和列正则表达式的匹配。
进一步的,文件配置表可包括文件定义表(如图3所示)和文件列定义表(如图4所示),文件定义表对文件信息进行限定;文件列定义表对文件内容进行限定;文件定义表包括文件标签、文件名称、文件后缀、文件最大行数、文件类型、列分隔符、生效状态、代表号码类型等;文件列定义表包括文件标识、列英文简称、列序号、最小长度、最大长度、列数据类型、列正则表达式、示例数据、保存字段、是否必填等;
校验过程如下:
(1)进行总列数校验,总列数要同文件列定义表中配置的列数相同,否则检验不通过,返回;
(2)循环文件信息,获取并循环每行内容从内存中获取列配置信息,根据文件列定义表对行内容进行逐列校验:
a、必填校验,使用stringutils.isblank判断列内容是否为空,为空则检验不通过,返回;
b、内容长度检验,判断列内容的长度是否在配置的最小长度和最大长度范围内,否者检验不通过,返回;
c、正则表达校验,根据配置中的正则表达式数据对列内容进行正则匹配,如果能够匹配则通过,否则检验不通过,返回。
s4、根据结果文件格式需求匹配结果文件的创建方法,创建结果文件。
其中,
当结果文件要求为文本文件时,将校验后的行内容中每行信息添加列分隔符合并为一个字符串,并添加换行符,循环写入文本文件;
当结果文件要求为excel文件时,基于pio工具类将校验后的内容循环写入excel文件。
s5、根据数据库存储结构要求对结果文件进行行列映射转换并入库。
如图2所示,本发明还提供一种实现基于jdk流程处理的通用文件方法的系统,包括:数据缓存模块、文件读取模块、文件校验模块和结果输出模块;
数据缓存模块,用于,
保存待处理文件的配置信息;其中,配置信息包括文件类型;
文件读取模块,用于,
根据待处理文件的文件类型匹配待处理文件的读取方法,基于读取方法解析待处理文件的行内容;
文件校验模块,用于,
对获取的行内容进行校验;
结果输出模块,用于,
根据结果文件格式需求匹配结果文件的创建方法,创建结果文件。
本发明最终将各模块共同打包成jar包,组成文件处理器,在业务流程处理需要时,可通过maven(项目对象模型)或直接应用的方法引入该文件处理器。
本发明的优点:
本发明将与业务无关的文件处理逻辑独立出来,通过配置一种通用文件处理方法,根据文件类型判断匹配不同的文件读取方法,进而实现对不同格式文件的读取、校验、创建结果文件及文件内容入库;同时文件处理中使用jdk支持的流式读取,提高了文件处理速度。
本发明系统模块打包为文件处理器,可通过maven(项目对象模型)或直接应用的方法引入到业务处理逻辑中的文件处理位置,再在数据库中根据数据需要创建配置表并进行相关配置,即可直接使用,无需再次进行代码开发,大大节省了人力成本和开发时间。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。