Spring Batch 在将文件写入 FlatFile 时在每个文件末尾添加 CRLF

问题描述 投票:0回答:1

我正在使用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>
spring spring-batch
1个回答
0
投票

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="&#13;" />
</bean>

上面将设置

\r
作为行结尾,使用
&#10;
将使用
\n
作为行结尾。使用您需要的。

© www.soinside.com 2019 - 2024. All rights reserved.