我有一个简单的弹簧批处理作业 - 逐行读取文件,对输入字符串执行某些操作,并编写一些输出。输出文件包含每行输入以及该行的某些处理状态(成功/失败。)从以下文件读取文件:<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?
答案 0 :(得分:7)
添加'file://'前缀解决了我的问题。谢谢@LucaBassoRicci。