2012-04-27 300 views
3

我正在讀取文件中的記錄並將其插入到數據庫中。FieldSet readString方法不讀取前導空格

我正在使用DB2數據庫。

的記錄是這樣的:

abc pqr abcd 

因此前美國廣播公司有幾個空格,以及在記錄的開始。

我讀使用SpringBatch程序和場內集映射我打印從文件中讀取字符串的文件:

System.out.println("*" + fieldSet.readString("FULL_RECORD") + "*"); 

但是,我得到的結果是:

*abc pqr abcd* 

這意味着領先的空間沒有得到保護。

在我的配置文件中的linetokenizer是:

<beans:property name="lineTokenizer"> 
    <beans:bean class="org.springframework.batch.item.file.transform.FixedLengthTokenizer"> 
    <beans:property name="columns" value="1-241"/> 
    <beans:property name="names" value="FULL_RECORD"/> 
    </beans:bean> 
</beans:property> 

我使用默認的行映射器類,以及將上述標記生成器作爲其財產。

org.springframework.batch.item.file.mapping.DefaultLineMapper 

如何保存每條記錄前面有一個空格?

+0

也許在「abc」和「pqr」之間有一個\ t而不是空格。 – 2012-04-27 07:22:22

+0

@IMAnis_tn:問題僅在記錄開始處有前導空格時發生。 abc和pqr之間的空間很好。 – Nik 2012-04-27 07:27:37

+0

所以嘗試使用trim()消除記錄的開始和結尾處的前導空格,當然如果可以將記錄作爲字符串。 – 2012-04-27 07:32:30

回答

1

看看代碼

  1. 的DefaultFieldset的readString方法使用
  2. String.trim()

只是改變

System.out.println("*" + fieldSet.readString("FULL_RECORD") + "*"); 

System.out.println("*" + fieldSet.readRawString("FULL_RECORD") + "*"); 

看到DefaultFieldSet.readRawString()

閱讀來自具有給定「名稱」列中的字符串值包括末尾 空白(不修剪)。

+0

謝謝邁克爾。也一樣。但是,我無法回答我自己的問題,所以無法更新.. – Nik 2012-04-30 09:10:40