本發明專利技術涉及一種基于springbatch批量讀取定長文件的方法,包括以下步驟:按行讀取待解析文件,得到字符串;創建多個映射類,各映射類包括定長文件及其不同屬性;在映射類內添加注解,所述注解包括所述屬性及各所述屬性的長度;根據得到的字符串找到對應的映射類,獲取對應定長文件及其屬性;根據對應的映射類內注解獲取各屬性的長度;根據各屬性的長度將字符串劃分為多個不同長度的字節,并得到對應的數據。本發明專利技術通過按行讀取待解析文件,得到字符串,并通過獲取映射類注解中的屬性長度將字符串劃分,從而可以讀取并處理固定字節長度的內容,因此可以區分并處理英文、數字和漢字等各類字符。類字符。類字符。
【技術實現步驟摘要】
一種基于springbatch批量讀取定長文件的方法
[0001]本專利技術涉及數據處理
,特別涉及一種基于springbatch批量讀取定長文件的方法。
技術介紹
[0002]目前使用springBatch進行文件批處理時,主要步驟為ItemReader(從數據源讀取數據)、ItemProcessor(對讀取的數據進行處理)、ItemWriter(存儲處理后的數據)。通常是逐條讀取并按分隔符或者字節數進行文件內容的解析,但是在金融場景下,文件內容一般是字節定長,有英文、數字和漢字等各類字符,不同的字符類型有時單個字符的字節數不同。
[0003]現有技術中,批量讀取文件是通過FlatFileItemReader類進行文件讀取,該類通過設置分隔符或者固定字符長度讀取行內容,但無法讀取和處理固定字節長度的內容。
[0004]因此有必要提供一種基于springbatch批量讀取定長文件的方法,以讀取并處理固定字節長度的內容。
技術實現思路
[0005]本專利技術的目的在于提供一種基于springbatch批量讀取定長文件的方法,以讀取并處理固定字節長度的內容。
[0006]為了解決現有技術中存在的問題,本專利技術提供了一種基于springbatch批量讀取定長文件的方法,包括以下步驟:
[0007]按行讀取待解析文件,得到字符串;
[0008]創建多個映射類,各映射類包括定長文件及其不同屬性;
[0009]在映射類內添加注解,所述注解包括所述屬性及各所述屬性的長度;
[0010]根據得到的字符串找到對應的映射類,獲取對應定長文件及其屬性;
[0011]根據對應的映射類內注解獲取各屬性的長度;
[0012]根據各屬性的長度將字符串劃分為多個不同長度的字節,并得到對應的數據。
[0013]可選的,在所述基于springbatch批量讀取定長文件的方法中,按行讀取待解析文件的實現方式為:在讀取待解析文件的接口設置FiledSetMapper屬性。
[0014]可選的,在所述基于springbatch批量讀取定長文件的方法中,根據不同的定長文件創建不同的映射類。
[0015]可選的,在所述基于springbatch批量讀取定長文件的方法中,所述注解還包括屬性的序號和/或屬性的類型。
[0016]可選的,在所述基于springbatch批量讀取定長文件的方法中,還包括以下步驟:將得到的數據進行寫操作。
[0017]可選的,在所述基于springbatch批量讀取定長文件的方法中,寫操作時,根據預設格式進行右補空格或左補0。
[0018]可選的,在所述基于springbatch批量讀取定長文件的方法中,對完成寫操作后的數據做持久化處理。
[0019]可選的,在所述基于springbatch批量讀取定長文件的方法中,所述持久化處理包括保存至數據庫。
[0020]在本專利技術所提供的基于springbatch批量讀取定長文件的方法中,通過按行讀取待解析文件,得到字符串,并通過獲取映射類注解中的屬性長度將字符串劃分,從而可以讀取并處理固定字節長度的內容,因此可以區分并處理英文、數字和漢字等各類字符。
附圖說明
[0021]圖1為本專利技術實施例提供的批量讀取定長文件的方法的流程圖。
具體實施方式
[0022]下面將結合示意圖對本專利技術的具體實施方式進行更詳細的描述。根據下列描述,本專利技術的優點和特征將更清楚。需說明的是,附圖均采用非常簡化的形式且均使用非精準的比例,僅用以方便、明晰地輔助說明本專利技術實施例的目的。
[0023]在下文中,如果本文所述的方法包括一系列步驟,本文所呈現的這些步驟的順序并非必須是可執行這些步驟的唯一順序,且一些所述的步驟可被省略和/或一些本文未描述的其他步驟可被添加到該方法。
[0024]現有技術中,批量讀取文件是通過FlatFileItemReader類進行文件讀取,該類通過設置分隔符或者固定字符長度讀取行內容,但無法讀取和處理固定字節長度的內容。
[0025]為了解決現有技術中存在的問題,本專利技術提供了一種基于springbatch批量讀取定長文件的方法,如圖1所示,包括以下步驟:
[0026]按行讀取待解析文件,得到字符串;
[0027]創建多個映射類,各映射類包括定長文件及其不同屬性;
[0028]在映射類內添加注解,所述注解包括所述屬性及各所述屬性的長度;
[0029]根據得到的字符串找到對應的映射類,獲取對應定長文件及其屬性;
[0030]根據對應的映射類內注解獲取各屬性的長度;
[0031]根據各屬性的長度將字符串劃分為多個不同長度的字節,并得到對應的數據。
[0032]進一步的,按行讀取待解析文件的實現方式為:創建實現FiledSetMapper接口的類,該類用于配置FlatFileItemReader中lineMapper的FiledSetMapper屬性,可實現對于文件整行的讀取。讀取時,設置ItemReader的文件路徑屬性,設置編碼格式。
[0033]可選的,在所述基于springbatch批量讀取定長文件的方法中,本專利技術中根據不同的定長文件創建不同的映射類,所述映射類包括定長文件及其不同屬性。并且,所述注解包括所述屬性及各所述屬性的長度、序號和/或類型等。例如賬戶同步文件如果定長是30位,其中第1至10位是賬號,第11位至30位是卡號,那么注解中的屬性為賬號時,其長度為10位,屬性為卡號時,其長度為20位。
[0034]通常的,所述方法還包括以下步驟:將得到的數據進行寫操作。寫操作之前,得到的數據可能已經根據其他格式進行處理,例如數據為00010,則可能處理為10,那么在寫操作時,根據預設格式進行右補空格或左補0,若預設格式是6位,則需要左補4個0,寫為
000010。
[0035]優選的,對完成寫操作后的數據做持久化處理。所述持久化處理可以為保存至數據庫。
[0036]綜上,在本專利技術所提供的基于springbatch批量讀取定長文件的方法中,通過按行讀取待解析文件,得到字符串,并通過獲取映射類注解中的屬性長度將字符串劃分,從而可以讀取并處理固定字節長度的內容,因此可以區分并處理英文、數字和漢字等各類字符。
[0037]上述僅為本專利技術的優選實施例而已,并不對本專利技術起到任何限制作用。任何所屬
的技術人員,在不脫離本專利技術的技術方案的范圍內,對本專利技術揭露的技術方案和
技術實現思路
做任何形式的等同替換或修改等變動,均屬未脫離本專利技術的技術方案的內容,仍屬于本專利技術的保護范圍之內。
本文檔來自技高網...
【技術保護點】
【技術特征摘要】
1.一種基于springbatch批量讀取定長文件的方法,其特征在于,包括以下步驟:按行讀取待解析文件,得到字符串;創建多個映射類,各映射類包括定長文件及其不同屬性;在映射類內添加注解,所述注解包括所述屬性及各所述屬性的長度;根據得到的字符串找到對應的映射類,獲取對應定長文件及其屬性;根據對應的映射類內注解獲取各屬性的長度;根據各屬性的長度將字符串劃分為多個不同長度的字節,并得到對應的數據。2.如權利要求1所述的基于springbatch批量讀取定長文件的方法,其特征在于,按行讀取待解析文件的實現方式為:在讀取待解析文件的接口設置FiledSetMapper屬性。3.如權利要求1所述的基于springbatch批量讀取定長文件的方法,其特征在于,根據...
【專利技術屬性】
技術研發人員:郭旺,
申請(專利權)人:上海通聯金融服務有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。