我可以使用spring批处理一次读取整个文本文件并将其发送到ItemProcessor吗?

时间:2014-04-21 16:44:02

标签: java spring batch-processing spring-batch

我有很多文本文件,每个文件有很多行,所有行都需要由外部进程同时处理(smooks)。如何将整个文件读入StringList<String>(因为有换行符)并将其全部发送到ItemProcessor

我尝试过使用

@Bean
public ItemReader<String> reader() {
    FlatFileItemReader<String> reader = new FlatFileItemReader<String>();
    reader.setResource(new ClassPathResource("sample-data.csv"));
    reader.setLineMapper(new PassThroughLineMapper());
    return reader;
}

但文件中的每一行仍然分别发送到ItemProcessor,这是有道理的,因为在文档中已经很好地定义了它。我是否试图以无意的方式使用弹簧批次?

编辑:

我正在尝试使用

reader.setRecordSeparatorPolicy(new SimpleRecordSeparatorPolicy(){
    @Override
    public boolean isEndOfRecord(String line){
        if(line.contains("\u001a")){   // EOF character
            return true;
        }
        return false;
    }
   });

但该文件不包含EOF个字符。当我手动更改最后一行以包含"end"并检查line.contains("end")时,这将按预期工作,并将整个内容发送到ItemProcessor。我认为我已经走上了正确的道路,需要进行一些调整,但如果某人有最好的做法,那就太棒了。

0 个答案:

没有答案