4

ファイルからレコードを読み取り、データベースに挿入しています。

DB2データベースを使用しています。

レコードは次のようなものです。

   abc    pqr  abcd

したがって、abcの前には、レコードの先頭にもいくつかのスペースがあります。

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

各レコードの前の先頭のスペースを保持するにはどうすればよいですか?

4

1 に答える 1

2

コードを見てください

  1. DefaultFieldsetのreadStringメソッドは
  2. String.trim()

変更するだけ

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

それも

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

DefaultFieldSet.readRawString()を参照してください

末尾の空白を含む「名前」が指定された列から文字列値を読み取ります(トリミングしないでください)。

于 2012-04-27T18:58:49.877 に答える