如何使用spring批处理解析固定长度格式文件(没有任何分隔符的文件)

时间:2018-02-13 18:27:01

标签: spring spring-batch

如何为固定长度格式文件(没有任何分隔符的文件)配置弹簧批阅读器。

每个元素都是根据其起始位置和结束位置确定的。

行样本:

120180208FAILED
220180208SUCCES
120170208SUCCES
1:代码,20180208:日期,失败:状态

2 个答案:

答案 0 :(得分:4)

您可以使用 FixedLengthTokenizer 阅读器。

这是您配置FixedLengthTokenizer的方法。

  

示例文本文件

     

UK21341EAH4121131.11customer1
  UK21341EAH4221232.11customer2
  UK21341EAH4321333.11customer3
  UK21341EAH4421434.11customer4
  UK21341EAH4521535.11customer5

Java配置

@Bean
    public FixedLengthTokenizer fixedLengthTokenizer() {
            FixedLengthTokenizer tokenizer = new FixedLengthTokenizer();

            tokenizer.setNames("ISIN", "Quantity", "Price", "Customer");
            tokenizer.setColumns(new Range(1-12),
                                 new Range(13-15),
                                 new Range(16-20),
                                 new Range(21-29));
            return tokenizer;
    }

XML配置

<bean id="fixedLengthLineTokenizer"
      class="org.springframework.batch.io.file.transform.FixedLengthTokenizer">
    <property name="names" value="ISIN,Quantity,Price,Customer" />
    <property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>

答案 1 :(得分:0)

在配置FixedLengthLineTokenizer时,必须以范围的形式提供以下每种长度:

<bean id="fixedLengthLineTokenizer"
      class="org.springframework.batch.io.file.transform.FixedLengthTokenizer">
    <property name="names" value="ISIN,Quantity,Price,Customer" />
    <property name="columns" value="1-12, 13-15, 16-20, 21-29" />
</bean>

访问https://docs.spring.io/spring-batch/trunk/reference/html/readersAndWriters.html#fixedLengthFileFormats