亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在使用 Spring Batch ItemWriter 寫入文件時關閉分隔符

如何在使用 Spring Batch ItemWriter 寫入文件時關閉分隔符

桃花長相依 2023-08-16 18:22:44
我正在嘗試生成以下格式的平面文件,該文件沒有任何分隔符。Customer.java private String customerId; private String customerName;MyFlatFileItemWriter.java@Componentpublic 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 Martin911Donald Trump正如您所看到的,文件中沒有逗號(,)或管道(|)預期的分隔符。但即使我沒有設置任何內容或設置為空作為分隔符,我也會在輸出文件中得到默認分隔符“,”。請讓我知道如何在沒有任何分隔符的情況下按原樣編寫字段值。
查看完整描述

1 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

發生的情況是,作為分隔符的空字符串被忽略,最終得到默認分隔符“,”。我認為這是 Spring Batch 中的一個錯誤,因為當您直接在編寫器中設置空分隔符而不使用構建器時,不會發生這種情況。請打開一個問題并引用此問題,我們將解決它。

請讓我知道如何在沒有任何分隔符的情況下按原樣編寫字段值。

同時,您可以使用以下應該有效的方法:

@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();

}


查看完整回答
反對 回復 2023-08-16
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號