1

我正在使用弹簧批处理平面文件阅读器来读取带有页眉和页脚值的文件。下面是示例文件,输出文件的每条记录都应附加标题日期和文件顺序。示例输入和输出如下。有人可以建议吗

  1. 如果有办法将页眉值和页脚值设置为作业参数并在编写器中使用?
  2. 有什么方法可以在 writer 中获取页眉和页脚值?提前致谢!
HH20210218001         --Header starting with "HH", date(20210218), filesequence(001)
name110
name220
name330
name440
name770
FT005                --Footer with "FT" and number of records

输出:(日期+文件序列(001)+姓名+年龄)

20210218001name110
20210218001name330
20210218001name440
20210218001name770

下面是我的文件阅读器

    <bean id="fileItemReader"
        class="org.springframework.batch.item.file.FlatFileItemReader"
        scope="step">
        <property name="resource" value="classpath:input/input.txt"></property>
        <!-- <property name="linesToSkip" value="2" /> -->
        <property name="lineMapper">
            <bean
                class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
                <property name="lineTokenizer">
                    <bean
                        class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
                        <property name="names" value="name,age" />
                        <property name="columns" value="1-5,6-8"></property>
                        <property name="strict" value="false" />

                    </bean>
                </property>
                <property name="fieldSetMapper">
                    <bean class="org.test.MyMapper">
                    </bean>
                </property>

            </bean>
        </property>

    </bean>

4

1 回答 1

0
  1. 如果有办法将页眉值和页脚值设置为作业参数并在编写器中使用?

不,到那时为时已晚。步骤开始时,作业参数已设置且无法更改。

  1. 有什么方法可以在 writer 中获取页眉和页脚值?

根据您的预期输出,您不需要页脚中的任何内容。如果您想从作者的标题中获取信息,您可以分两步完成:

  • 第 1 步:读取(仅)标头并将任何需要的信息放入执行上下文中
  • 第 2 步:使用一个步进范围的编写器,它从执行上下文中获取任何所需的信息并使用它来编写项目
于 2021-02-22T10:18:21.627 回答