gpt4 book ai didi

Spring-Batch 多行记录项目编写器,每条记录的行数可变

转载 作者:行者123 更新时间:2023-12-05 00:02:32 25 4
gpt4 key购买 nike

我有以下要求,但无法决定采取的方法:

我需要将数据写入固定格式的输出文件,其中每条记录跨越多行,如下所示:

000120992599999990000000000000009291100000000000000000000000010000
000000000000000000000006050052570009700000050000990494920000111100
ABCDE:WXYZ 0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
000000000000000000000006050052730005700001100000090494920000221200
ABCDE:WXYZ 0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
000000000000000000000006050113110009700000000000000494920000311100
ABCDE:WXYZ 0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
000012099259999999000000000000000929110000000000000000000000001000

这是来自上述示例的一条记录:
000000000000000000000006050052570009700000050000990494920000111100
ABCDE:WXYZ 0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200
descriptiongoesheredescriptiongoesheredescriptiongoesher0200

第一行和最后一行分别是页眉和页脚。
每条记录的第一行包含几个细节。
第二行有一些带空格的其他细节。

我有一个很长的描述字段,我需要将其分成 56 个字符部分,并在记录的第 3 行之后附加这些部分。

所以在某些记录中,这可能只是一行,而在某些记录中也可能是三行。

我需要有关如何在上述情况下设计我的 itemwriter 的指导。

尼克

最佳答案

官方spring-batch-samples中有一个多行记录编写器示例, 搜索 multiline.xmlMultiLineTradeItemWriter
它基本上是通常的委托(delegate)原则,您只需要一个适当的域对象,其中可能包含那些 1..n 中间行的列表

    public class MultiLineTradeItemWriter implements ItemWriter<Trade>, ItemStream {

private FlatFileItemWriter<String> delegate;

public void write(List<? extends Trade> items) throws Exception {
List<String> lines = new ArrayList<String>();
for (Trade t : items) {
lines.add("BEGIN");
lines.add("INFO," + t.getIsin() + "," + t.getCustomer());
lines.add("AMNT," + t.getQuantity() + "," + t.getPrice());
lines.add("END");
}
this.delegate.write(lines);
}
}

关于Spring-Batch 多行记录项目编写器,每条记录的行数可变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7836689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com