我正在开发一个Spring批处理应用程序,我正在使用FlatFileItemReader来读取带分隔符的文件〜或|并且它的工作正常,一旦读完就调用处理器。
但是当我尝试将分隔符用作\ 001时,处理器未被调用,我也没有在控制台中收到任何错误。(Linux环境)
示例文件格式:
0002〜000000000000000470〜000006206210008078〜PR〜7044656907〜7044641561 ~~~~ 240082202 ~~~ ENG〜CH ~~ 19940926〜d ~~~ AL ~~~ P〜USA
是我的读者配置。
<property name="resource" value="#{stepExecutionContext['fileResource']}" />
<!-- <property name="linesToSkip" value="1"></property> -->
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="delimiter" value="${file.delimiter}"/>
<property name="names" value="sor_id,sor_cust_id,acct_id,cust_role_type_cd,cust_full_nm,mailg_adr_line_1,mailg_adr_line_2,mailg_city_nm,mailg_geo_st_cd,mailg_full_pstl_cd,mailg_cntry_cd,mailg_adr_desc,phy_adr_line_1,phy_adr_line_2,phy_city_nm,phy_geo_st_cd,phy_full_pstl_cd,phy_cntry_cd,phy_adr_desc,home_phn_num,work_phn_num,mobile_phn_num,email_adr_txt,ssn,cust_tax_idn_num,gndr_cd,martl_cd,lang_cd,acct_stat_cd,cust_brth_dt,acct_open_dt,sor_acct_stat_cd,sor_acct_stat_desc,vld_phn_num_ind,prod_cd,prft_ctr_cd,bus_legl_strc_cd,acct_use_cd,cntry_of_origin_cd" />
</bean>
</property>
<property name="fieldSetMapper">
<bean class="com.cap1.cdi.batch.SrcMasterFieldSetMapper" />
</property>
</bean>
</property>
</bean>
其他人是否面临同样的问题?
此致 香卡
答案 0 :(得分:0)
我将回答我自己的问题。
实际问题是控制字符在linux中用作分隔符(^ A)
在Java中,当我使用string.split(&#34; \ u0001&#34;)时,它正在工作。同样将它传递给Spring批处理flatfileitemreader作为分隔符,它就像一个魅力。
由于 香卡。