Java 如何使用SpringBatch将头文件和尾文件写入现有文件,而不覆盖该文件中的信息?
我在一个目录中有多个文件,这些文件中的内容大小会有所不同 Ex文件1: 第1行.数据 Ex文件2: 第1行.数据 第2行.数据 第3行.数据 我需要在文件顶部附加一个头,在底部附加一个尾,而不使用springbatch覆盖文件中的数据 Ex文件1: HeaderFooterZZZ0000000xxxxxxxx 第1行.数据 HeaderFooterZZZ0000000xxxxxxxx Ex文件2: HeaderFooterZZZ0000000xxxxxxxx 第1行.数据 第2行.数据 第3行.数据 HeaderFooterZZZ0000000xxxxxxxx 我的上下文文件的writer部分具有以下常规配置,但没有向现有测试文件添加头或尾文件。如何配置flatFileItemWriter,以便在不覆盖文件现有数据的情况下向现有文件添加标题和尾部Java 如何使用SpringBatch将头文件和尾文件写入现有文件,而不覆盖该文件中的信息?,java,spring,spring-batch,Java,Spring,Spring Batch,我在一个目录中有多个文件,这些文件中的内容大小会有所不同 Ex文件1: 第1行.数据 Ex文件2: 第1行.数据 第2行.数据 第3行.数据 我需要在文件顶部附加一个头,在底部附加一个尾,而不使用springbatch覆盖文件中的数据 Ex文件1: HeaderFooterZZZ0000000xxxxxxxx 第1行.数据 HeaderFooterZZZ0000000xxxxxxxx Ex文件2: HeaderFooterZZZ0000000xxxxxxxx 第1行.数据 第2行.数据 第3行.
<bean id="addHeaderTrailerWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
<property name="lineAggregator" ref="lineAggregator" />
<property name="resource" value="file://#{stepExecutionContext['WORK.FILE.NAME']}" />
<property name="headerCallback" ref="headerFooterCallback" />
<property name="footerCallback" ref="headerFooterCallback" />
</bean>
<bean id="lineAggregator" class="org.springframework.batch.item.file.transform.PassThroughLineAggregator"/>
<bean id="headerFooterCallback" class="headerFooterCallbackClass">
<constructor-arg name="headerFooter" ref="customHeaderFooter" />
</bean>
<bean id="customHeaderFooter" class="customHeaderFooterImplClass" >
<property name="input1" value="HEADERFOOTER" />
<property name="input2" value="ZZZZZZZZ" />
<property name="inout3" value="00000000" />
<property name="input4" value="XXXXXXXX" />
</bean>
无法覆盖文件本身以添加页眉和页脚。在
FlatFileItemWriter
中有一个append
模式,但它不会在文件“inline”中的当前数据之前插入头
您可以通过两个步骤创建作业:
- 步骤1(面向块):从文件中读取并写入另一个文件,添加页眉和页脚
- 步骤2(tasklet):删除原始文件并重命名副本