在spring-batch中使用FlatFileItemWriter创建新的输出文件

时间:2014-06-28 01:09:58

标签: spring-batch

我有一个简单的弹簧批处理作业 - 逐行读取文件,对输入字符串执行某些操作,并编写一些输出。输出文件包含每行输入以及该行的某些处理状态(成功/失败。)从以下文件读取文件:<dir>/<inputFolder>/<inputFileName>并将处理后的输出写入<dir>/<outputFolder>/<inputFileName>所有这些值都传递为{{1} }}
文件阅读器是这样的:

jobParameters

项目编写器是这样的:

<bean id="itemReader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
        <property name="resource" value="file:#{jobParameters['cwd']}/#{jobParameters['inputFolder']}/#{jobParameters['inputFile']}" />

        <property name="lineMapper">
          <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">

            <property name="lineTokenizer">
              <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                <property name="delimiter" value="," />
              </bean>
            </property>
            <property name="fieldSetMapper" >
              <bean class="org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper" />
            </property>
          </bean>
        </property>
    </bean>

当我运行这个批处理作业时,读者正确读取文件,处理器完成其工作但是itemWriter抛出了FileNotFound异常

<bean id="itemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step" >
        <property name="resource" value="#{jobParameters['cwd']}/#{jobParameters['outputFolder']}/#{jobParameters['inputFile']}" />
        <property name="lineAggregator">
            <bean class="org.springframework.batch.item.file.transform.PassThroughLineAggregator" />
        </property>
    </bean>  

每次批处理作业运行时,输出文件都不存在。 itemWriter必须创建它。是不是可以使用FlatFileItemWriter?

1 个答案:

答案 0 :(得分:7)

添加'file://'前缀解决了我的问题。谢谢@LucaBassoRicci。