gpt4 book ai didi

java - 如何在使用 Spring Batch ItemWriter 写入文件时关闭分隔符

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

我正在尝试生成以下格式的平面文件,该文件没有任何分隔符。

客户.java

 private String customerId;
private String customerName;

MyFlatFileItemWriter.java

@Component
public class MyFlatFileItemWriter {


@Bean(name = "myWriter")
public FlatFileItemWriter<Customer> bondEdgeFlatFileItemWriter() {
return new FlatFileItemWriterBuilder<Customer>()
.name("myWriter")
.resource(new FileSystemResource("myFileNameWithPath"))
.delimited().delimiter("")
.names(new String[] {"customerId", "customerName" })
.build();
}
}

我期待在输出文件myFileNameWithPath.txt中出现以下内容。

123Jorge Martin
911Donald Trump

如您所见,文件中没有逗号 (,) 或管道 (|) 所需的分隔符。但即使我没有设置任何内容或设置为空作为分隔符,我也会在输出文件中得到默认分隔符“,”。请让我知道如何按原样编写不带任何分隔符的字段值。

最佳答案

发生的情况是空字符串作为分隔符 is ignored最终您将得到默认的分隔符“,”。我认为这是 Spring Batch 中的一个错误,因为当您直接在编写器中设置空分隔符而不使用构建器时,不会发生这种情况。请打开一个问题并引用此问题,我们将修复它。

Please let me know how to write the field values as is without any delimiter.

与此同时,您可以使用以下应该有效的方法:

@Bean(name = "myWriter")
public FlatFileItemWriter<Customer> bondEdgeFlatFileItemWriter() {
BeanWrapperFieldExtractor<Customer> fieldExtractor = new BeanWrapperFieldExtractor<>();
fieldExtractor.setNames(new String[] {"customerId", "customerName" });
DelimitedLineAggregator<Customer> lineAggregator = new DelimitedLineAggregator<>();
lineAggregator.setDelimiter("");
lineAggregator.setFieldExtractor(fieldExtractor);

return new FlatFileItemWriterBuilder<Customer>()
.name("myWriter")
.resource(new FileSystemResource("customers.txt"))
.lineAggregator(lineAggregator)
.build();
}

关于java - 如何在使用 Spring Batch ItemWriter 写入文件时关闭分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068980/

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