簡體   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