Spring batch 如何使用FlatFileReader进行读取,但仅写入ExecutionContext

Spring batch 如何使用FlatFileReader进行读取,但仅写入ExecutionContext,spring-batch,Spring Batch,我想读取一个文本文件来构建一个映射,并将其放置到ExecutionContext中供以后参考 我想开始使用chunk Processing来读取文件,处理它,但我不需要FlatFileItemWriter来写入文件。但是,bean初始化需要在编写器上设置一个资源 我做错了吗?chunk=处理方法是否错误。创建一个tasklet会让我更明智,但我希望SpringBatch能帮我阅读我的文件。使用tasklet,我必须编写代码来打开和处理文本文件。对吧? 如能就如何进行提供建议,将不胜感激 我最后要

我想读取一个文本文件来构建一个映射,并将其放置到ExecutionContext中供以后参考

我想开始使用chunk Processing来读取文件,处理它,但我不需要FlatFileItemWriter来写入文件。但是,bean初始化需要在编写器上设置一个资源

我做错了吗?chunk=处理方法是否错误。创建一个tasklet会让我更明智,但我希望SpringBatch能帮我阅读我的文件。使用tasklet,我必须编写代码来打开和处理文本文件。对吧?

如能就如何进行提供建议,将不胜感激

我最后要做的(我是新来的)是创建一个Tasklet,并让它实现StepExecutionListener接口。工作得很有魅力。它读取一个以逗号分隔的文件,逐行删除第二列。我为ExecutionContext映射键创建了一个“枚举”。基本上,这一点如下:

public class ProcessTabcPermitsTasklet implements Tasklet, StepExecutionListener {

    private Resource resource;
    private int linesToSkip;
    private Set<String> permits = new TreeSet<String>();

    public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext)  throws Exception {

        BufferedReader reader = new BufferedReader((new FileReader(resource.getFile())));
        String line = null;
        int lines = 0;

        while ((line = reader.readLine()) != null) {

            if (++lines <= linesToSkip)
                continue;

            String[] s = StringUtils.commaDelimitedListToStringArray(line);
            permits.add(s[TABC_COLUMNS.PERMIT.ordinal()]);

        }

        return RepeatStatus.FINISHED;
    }

    /**
     * @param file
     *            the file to set
     */
    public void setResource(Resource resource) {
        this.resource = resource;
    }

    /**
     * @param linesToSkip
     *            the linesToSkip to set
     */
    public void setLinesToSkip(int linesToSkip) {
        this.linesToSkip = linesToSkip;
    }


    public ExitStatus afterStep(StepExecution stepExecution) {
        stepExecution.getExecutionContext().put(EXECUTION_CONTEXT.TABC_PERMITS.toString(), permits);
        return ExitStatus.COMPLETED;
    }

} 
公共类ProcessTabcPermitsTasklet实现Tasklet,StepExecutionListener{
私人资源;
私人int linesToSkip;
私有集许可证=新树集();
public RepeatStatus execute(StepContribution贡献,ChunkContext ChunkContext)引发异常{
BufferedReader=new BufferedReader((new FileReader(resource.getFile()));
字符串行=null;
int行=0;
而((line=reader.readLine())!=null){
如果(++行