Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring批处理:将对象写入固定长度的行?_Java_Spring_Spring Batch_Batch Processing - Fatal编程技术网

Java Spring批处理:将对象写入固定长度的行?

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

Spring Batch提供了类
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
,并基于范围对象构建格式化程序字符串。难道不应该那么难吗?我们愿意接受一项贡献,它增加了建立一条生产线的范围,但正如其他人所指出的,它在今天并不存在。