spring批处理编写器附加下一行的数据

时间:2014-04-04 21:31:23

标签: java spring spring-batch

嗨,我是这个春季批次的新手。我正在从数据库中读取数据并将其写入文本文件。我将数据附加到现有file.i可以做到这一点,但我想从新行追加文件中的数据....

实施例.... 现有的文本文件就像。

嗨,我是春季批次的新手。

所以现在当我从flatfileitemwriter写入其他数据时,它会直接附加到该行旁边。我想让它从下一行写为...

嗨,我是春季批次新手。但我会学习它。

但现在打印为....

嗨,我是春季批次的新手。但我会学习它。

所以请帮助我......

这是我的作家..

<bean id="dbToFileItemWriter"
        class="org.springframework.batch.item.file.FlatFileItemWriter"
        scope="step">
        <property name="resource" value="file:${Subrogrationoutfile}" />
        <property name="appendAllowed" value="true"/>
        <property name="lineAggregator">
        <bean class="com.hcsc.ccsp.nonadj.subrogration.batch.SubrogrationLineAggregator"/>
    </property>
    </bean>

我的聚合器是

public class SubrogrationLineAggregator extends PassThroughLineAggregator<Subrogration>{
    @Override
public  String aggregate(Subrogration subrogration){

        StringBuilder result = new StringBuilder();


                   //logic

        return result.toString();

    }

1 个答案:

答案 0 :(得分:0)

默认情况下,FlatFileItemWriter使用默认行分隔符

System.getProperty("line.separator")

我认为你已经在代码中的某些位置覆盖了这个值。


有关详细信息,请阅读source code

以下是来自write()

FlatFileItemWriter方法的一段代码
@Override
public void write(List<? extends T> items) throws Exception {

    ...
    StringBuilder lines = new StringBuilder();
    int lineCount = 0;
    for (T item : items) {
        lines.append(lineAggregator.aggregate(item) + lineSeparator);
        lineCount++;
    }
    ...
}