Java Spring批处理:将对象写入固定长度的行?
Spring Batch提供了类Java Spring批处理:将对象写入固定长度的行?,java,spring,spring-batch,batch-processing,Java,Spring,Spring Batch,Batch Processing,Spring Batch提供了类FixedLengthTokenizer,它可以轻松地将单行的不同偏移量读取到对象的文件中。每个字段的内容从固定长度的特定范围中提取: FixedLengthTokenizer tokenizer = new FixedLengthTokenizer(); String[] names = {"A", "B", "C", "D"}; tokenizer.setNames(names); Range[] ranges = {new Range(1, 4), new
FixedLengthTokenizer
,它可以轻松地将单行的不同偏移量读取到对象的文件中。每个字段的内容从固定长度的特定范围中提取:
FixedLengthTokenizer tokenizer = new FixedLengthTokenizer();
String[] names = {"A", "B", "C", "D"};
tokenizer.setNames(names);
Range[] ranges = {new Range(1, 4), new Range(5, 12), new Range(13, 14), new Range(15, 15)};
tokenizer.setColumns(ranges);
我想做一个准确的网站。我想把一个对象写入一个平面文件,不同的字段应该以固定的长度写入该文件。SpringBatch为将线映射到对象提供了接口org.springframework.Batch.item.file.transform.LineAggregator
。但我想知道为什么没有FixedLengthLineAggregator
在Spring Batch中,将对象写入字段具有固定长度的行的正确方法是什么?正如@canillas在他们的评论中所指出的,管理这种方法将通过Spring Batch的
FormatterLineAggregator
实现。使用String.format
的格式功能可以让您以跨JVM和独立于框架的标准方式生成固定长度的记录。也许您可以使用Formatter。类似于这样的
意味着您正在将4列写入固定格式文件,列长度分别为8、12、11和16。是的,还有一个聚合器:org.springframework.batch.item.file.transform.FormatterLineAggregator
,但我想知道是否没有一个聚合器可以像FixedLengthTokenizer
那样使用Range
。在编写更大的对象时,您的格式建议将不会如此清晰易读。我认为您只能这样做:创建自己的writer,它包装FlatFileItemWriter
,并基于范围对象构建格式化程序字符串。难道不应该那么难吗?我们愿意接受一项贡献,它增加了建立一条生产线的范围,但正如其他人所指出的,它在今天并不存在。