Spring 批处理 - FlatFileItemReader \001 分隔符问题

Spring Batch - FlatFileItemReader \001 delimiter issue

我正在开发一个 Spring 批处理应用程序,我正在使用 FlatFileItemReader 读取带有分隔符 ~ 或 | 的文件它工作正常,一旦读取完成就会调用处理器。

但是当我尝试将定界符用作 \001 时,处理器没有被调用并且我在控制台中也没有收到任何错误。(Linux 环境)

示例文件格式:

0002~000000000000000470~000006206210008078~PR~7044656907~7044641561~~~~240082202~~~ENG~CH~~19940926~D~~~AL~~~P~美国

这个是我的reader配置。

    <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>

还有其他人遇到过同样的问题吗?

此致, 香卡

我要回答我自己的问题。

实际问题是控制字符在 linux (^A)

中用作分隔符

在 Java 中,当我使用 string.split("\u0001") 时它正在工作。还将相同的传递给 Spring batch flatfileitemreader 作为分隔符,它就像一个魅力。

谢谢 香卡.