繁体   English   中英

如何在不覆盖该文件中的信息的情况下使用 spring 批处理将标题和尾部写入现有文件?

[英]How do I write a header and trailer to an existing file using spring batch without overwriting the information in that file?

我在一个目录中有多个文件,这些文件中的内容大小不一。

前文件1:

line 1.data 数据数据

前文件2:

line 1.data 数据数据

line 2.data 数据数据

line 3.data 数据数据

我需要在文件顶部附加一个标题,在底部附加一个预告片,而不使用 spring 批处理覆盖文件中的数据。

前文件1:

表头脚底ZZZZZZZZ0000000XXXXXXXX

line 1.data 数据数据

表头脚底ZZZZZZZZ0000000XXXXXXXX

前文件2:

表头脚底ZZZZZZZZ0000000XXXXXXXX

line 1.data 数据数据

line 2.data 数据数据

line 3.data 数据数据

表头脚底ZZZZZZZZ0000000XXXXXXXX

我的上下文文件的 writer 部分具有以下一般配置,但没有向现有测试文件添加标题或预告片。 如何配置我的 flatFileItemWriter 以将标头和尾标添加到现有文件而不覆盖文件的现有数据?

<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模式,但不会在文件“内联”中的当前数据之前插入标题。

您可以做的是通过两个步骤创建作业:

  • step1(面向块):从文件中读取并写入另一个添加页眉和页脚的文件
  • step2(tasklet):删除原文件,重命名副本。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM