spring - 使用 FlatFileItemReader 捕获读取行

标签 spring spring-batch

我正在使用 FlatFileItemReader 读取一个 csv 文件,并使用 FieldSetMapper 将其映射到域对象。

如果映射失败,我希望由 FlatFileItemReader 读取原始行,以便我可以将其写入另一个 csv 文件。

我最初的想法是使用一些监听器将读取的字符串推送到 StepContext,然后使用 SkipListener 获取字符串以将其写入另一个文件。但是我找不到一种方法来捕获 FlatFileItemReader 读取的原始行。

建议?

最佳答案

执行 ItemReadListener 的 onReadError(Exception) 方法界面正是您所需要的。

public void onReadError(Exception e) {
    if(e instanceof FlatFileParseException) {
        FlatFileParseException ffpe = (FlatFileParseException) e;
        ffpe.getLineNumber(); //The line number error occured
        ffpe.getInput();//Text value of the unparsed line
    }
}

关于spring - 使用 FlatFileItemReader 捕获读取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278027/

相关文章:

java - 根上下文和调度程序 servlet 上下文到底是如何进入 Spring MVC Web 应用程序的?

spring-batch - Spring Batch 错误(A Job Instance Already Exists)和 RunIdIncrementer 只生成一次

java - Spring Batch 输出到绝对文件路径

Spring Batch,在编写器中获取stepExecution?

spring - JmsOutboundGateway错误: No sender waiting for reply

java - 如何使用 Spring REST Docs 将顶级数组记录为响应负载

java - Spring MVC Controller 如何在ajax请求上绑定(bind)到多个模型

Java Spring Patch RFC-6902 即时类型转换异常

java - 使用 JpaPagingItemReader 时无法获取基于不同 pageSize 和 ChunkSize 的所有记录

javascript - 使用 Javascript 动态实现 Spring Security