繁体   English   中英

Spring Batch-FlatFileItemWriter写入文件,关闭该文件,写入新文件

[英]Spring Batch - FlatFileItemWriter write to a file, close it, write to new file

因此,我有一个自定义类,该类扩展了我用来编写CSV文件的FlatFileItemWriter。 根据某些条件,我想完成第一个文件,然后写入新文件。 有没有办法用FlatFileItemWriter做到这一点?

这是我的代码示例:

@Override
public void write(List<? extends MyObject> items) throws Exception {
    ExecutionContext stepContext = this.stepExecution.getExecutionContext();
    int currentFileIncrememnt = (int) stepContext.get("currentFileIncrement");
    if(currentFileIncrement== fileIncrement) {
        super.write(items);
    }
    else {
        super.close();
        fileIncrement = currentFileIncrement;
        super.setHeaderCallback(determineHeaderCallback());
        super.setResource(new FileSystemResource("src/main/resources/" + fileIncrement+ ".csv"));
        super.setShouldDeleteIfExists(true);
        DelimitedLineAggregator<MyObject> delLineAgg = new DelimitedLineAggregator<>();
        delLineAgg.setDelimiter(",");
        BeanWrapperFieldExtractor<MyObject> fieldExtractor = new BeanWrapperFieldExtractor<>();
        fieldExtractor.setNames(new String[] {"id", "amount"});
        delLineAgg.setFieldExtractor(fieldExtractor);
        super.setLineAggregator(delLineAgg);
        super.write(items);
    }
}

我不知道您使用的是定制作家还是春季作家。 如果您使用自定义(可能是从第一代开始的扩展),则可以通过在处理器,读取器或映射器中传递参数来使用所需的内容。 如果要使用Spring编写器,则应执行隔离步骤。 给出更多细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM