问题描述
我正在使用 spring 批处理平面文件阅读器来读取带有页眉和页脚值的文件。以下是示例文件和输出文件,每条记录都应附加标题日期和文件序列。示例输入和输出如下。 有人可以建议吗
HH20210218001 --Header starting with "HH",date(20210218),filesequence(001)
name110
name220
name330
name440
name770
FT005 --Footer with "FT" and number of records
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>
解决方法
- 是否有办法将页眉值和页脚值设置为作业参数并在编写器中使用?
不,那时已经太晚了。步骤开始时,作业参数已经设置,无法更改。
- 有没有办法在 writer 中获取页眉和页脚值?
根据您的预期输出,您不需要页脚中的任何内容。如果您想从编写器的标题中获取信息,可以分两步完成:
- 步骤 1:读取(仅)标头并将任何需要的信息放入执行上下文中
- 第 2 步:使用分步范围的编写器,从执行上下文中获取任何必需的信息并使用它来编写项目