【发布时间】:2017-04-07 15:50:49
【问题描述】:
所以我有一个自定义类,它扩展了我用来编写 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);
}
}
【问题讨论】:
-
希望这能提供一些见解stackoverflow.com/questions/30092149/…
标签: java spring-batch