2012-03-13 197 views
4

我正在阅读有两个字段的逗号分隔文件。该文件有时不包含第二个字段,因此Spring DelimitedLineTokenizer在发生这种情况时不应该抱怨。通过载明下列如何跳过使用FlatFileItemReader读取文件的空字段?

  <property name="lineTokenizer"> 
       <bean 
        class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"> 
        <property name="names" 
         value="planNumber, paymentAmount"> 
        </property> 
        <property name="delimiter"> 
         <value>,</value> 
        </property> 
       </bean> 
      </property> 

Spring并不是抱怨

Caused by: org.springframework.batch.item.file.transform.IncorrectTokenCountException: Incorrect number of tokens found in record: expected 2 actual 1 
    at org.springframework.batch.item.file.transform.AbstractLineTokenizer.tokenize(AbstractLineTokenizer.java:123) 
    at org.springframework.batch.item.file.mapping.DefaultLineMapper.mapLine(DefaultLineMapper.java:46) 
    ... 60 more 

的StringTokenizer不会抱怨虽然

回答

7

设置linetokenizer以下属性设置为false ..这将有助于避免被抛出

异常
<property name="strict" value="false"></property> 
+1

因为我不想避免例外,我需要要在两种情况下读取数据。我的解决方案是写一个客户Tokenizer和扩展AbstractLineTokenizer – sonx 2012-03-15 14:26:03

+0

数据仍然会被读取..如果数据读取无效,您将需要手动处理它。 – Mahesh 2012-03-18 10:41:12

相关问题