我正在使用Spring Batch,当使用org.springframework.batch.item.file.FlatFileItemWriter时,它在每行末尾写入CRLF。每个文件末尾有 CRLF 会给其他系统带来问题。我们怎样才能避免这种情况呢?
<bean id="cvsWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
<property name="resource" value="somepath"/>
<property name="shouldDeleteIfExists" value="true"/>
<property name="encoding" value="UTF-8"/>
<property name="lineAggregator" ref="someLineAggregator"/>
<property name="headerCallback" ref="someHeaderCallback" />
</bean>
<bean id="someMultiResource" class="org.springframework.batch.item.file.MultiResourceItemWriter" scope="step">
<property name="name" value="multiResourceWriter" />
<property name="delegate" ref="cvsWriter" />
<property name="resource" value="somepath" />
<property name="itemCountLimitPerResource" value="2000000" />
<property name="resourceSuffixCreator" ref="suffixCreator" />
</bean>
FlatFileItemReader
公开了lineSeparator
属性。
行分隔符的公共设置器。默认为系统属性
。line.separator
javadoc 说明了上述内容。它将将此属性设置为您的平台使用的默认值。在您的情况下使用的是
CRLF
。您可以通过将其添加到您的配置中来强制它使用其他内容。
<bean id="cvsWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
<property name="resource" value="somepath"/>
<property name="shouldDeleteIfExists" value="true"/>
<property name="encoding" value="UTF-8"/>
<property name="lineAggregator" ref="someLineAggregator"/>
<property name="headerCallback" ref="someHeaderCallback" />
<property name="lineSeparator" value=" " />
</bean>
上面将设置
\r
作为行结尾,使用
将使用\n
作为行结尾。使用您需要的。