当前位置: 首页 > 知识库问答 >
问题:

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

伏默
2023-03-14

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

顾客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

如您所见,文件中不需要逗号(,)或管道(|)分隔符。但我在输出文件中得到了默认的分隔符“”,即使我没有设置任何东西或设置为空作为分隔符。请让我知道如何在没有任何分隔符的情况下按原样写入字段值。

共有1个答案

步致远
2023-03-14

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

请让我知道如何在没有任何分隔符的情况下按原样写入字段值。

同时,您可以使用以下功能:

@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();
}
 类似资料:
  • 问题内容: 在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 如何在Java中将字节数组转换为File? 问题答案: 一个 文件对象 不包含文件的内容。它仅是硬盘(或其他存储介质,如SSD,USB驱动器,网络共享)上文件的指针。因此,我认为您想要将其写入硬盘。 您必须使用Ja

  • 我需要从时间中删除冒号(:)。 结果应该类似于(HH:MM:SS)(03:15:00)。也需要加秒。谁能帮忙吗?

  • 在我最近的经验中,我使用了使用分隔符的拆分函数和子字符串函数。只是想知道是否有人能说明哪一个更好,在什么条件下? 编辑: 我主要关心的是这些函数对性能和代码质量的影响。(如果我可以使用其中的任何一个,应该首选哪一个?如果有任何其他决定因素,请提及。) 顺便说一句,我和一个同事讨论过这个问题,他说他不喜欢使用子串。这就是我的想法... 仅供参考,我有一个包含网址的长ID,以及两个不同的ID,我需要分

  • 问题内容: 我如何将分数写入文件? 问题答案: 您可以手动打开和关闭文件,但最好使用它,因为它可以为您处理关闭文件。 表示追加到文件中,该文件不会覆盖以前的内容- 这可能是您想要的。据我所知,您将要在print语句之后或之前添加它。如果您不懂读写文件,则应查看此链接。

  • 问题内容: 我遇到一种情况,我想将我创建的所有日志写入文本文件。 我们正在使用java.util.logging.Logger API生成日志。 我试过了: 但是仍然只能在控制台上获取我的日志。 问题答案: 试试这个样本。这个对我有用。 在MyLogFile.log产生输出 编辑: 要删除控制台处理程序,请使用 因为ConsoleHandler已向父记录器注册,所有记录器都源自该记录器。

  • 这个问题似乎不是关于特定的编程问题、软件算法或主要由程序员使用的软件工具。如果您认为该问题将在另一个Stack Exchange站点上讨论,您可以留下评论,解释该问题可以在何处回答。 未解决原始关闭原因 我有一个大小为2.5 GB的日志文件。有没有办法使用windows命令提示符将此文件拆分为更小的文件?