java - MultiResourceItemReader - 如果标题无效则跳过整个文件

标签 java spring-batch

我的 Spring Batch 作业读取包含两种类型 header 的 csv 文件列表。如果文件头与两种可能的头类型之一不匹配,我希望读者跳过整个文件。

我查看了Spring Boot batch - MultiResourceItemReader : move to next file on error 。 但我不知道如何验证 header 标记以确保它们在计数和内容上匹配

最佳答案

我能够通过执行以下操作来解决这个问题,

public FlatFileItemReader<RawFile> reader() {
    return new FlatFileItemReaderBuilder<RawFile>()
            .skippedLinesCallback(line -> {
                // Verify file header is what we expect
                if (!StringUtils.equals(line, header)) {
                    throw new IllegalArgumentException(String.format("Bad header!", line));
                }
            })
            .name( "myReader" )
            .linesToSkip( 1 )
            .lineMapper( new DefaultLineMapper() {
                {
                    setLineTokenizer( lineTokenizer );
                    setFieldSetMapper( fieldSetMapper );
                }} )
            .build();
}

MultiResourceItemReader 中设置委托(delegate)时,我调用 reader() 方法。

注意headerlineTokenizerfieldSetMapper 都是我根据类型设置的变量我的工作预计会读取文件(以及哪一组 header )。

关于java - MultiResourceItemReader - 如果标题无效则跳过整个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59941623/

相关文章:

使用扩展 DefaultBatchConfiguration 的编程方式时未创建 Spring Batch 5 和 Spring Boot 3 元数据表

java - 如何拥有多个spring boot批量配置类

java - 无法使用 eclipse link 和 oracle db 生成表 - IllegalBlockSizeException

java - 如何将纳秒级的正常运行时间转换为可读的日期时间格式

java - 如何在android中从java获取变量值到xml文件?

java - spring-xd-batch 作业锁定

java - Spring Batch FlatFileItemReader 继续错误数量的 token

java - Spring Batch ItemReader 处理树结构文件

java - Java序列化可以与加密相媲美吗?

Java:将时区添加到 DateTimeFormatter