【问题标题】:how to set EOT as line separator for Spring batch file processing如何将 EOT 设置为 Spring 批处理文件处理的行分隔符
【发布时间】:2020-11-11 09:43:50
【问题描述】:

我需要处理以 EOT 字符作为记录结尾但没有换行符的文件。我正在使用弹簧批处理进行批量处理。我无法将 EOT 设置为十六进制值“\u0004”作为处理的行尾字符

AP01000110319.99RD34/78 OPTIMA BAT 0110000000100****AU0081140500003001000110

这些字符不可见。它基本上是 EOT(传输结束字符)。

我的代码看起来像这样

public FlatFileItemReader<ProductDTO> productReader() throws Exception 

{
    FlatFileItemReader<ProductDTO> reader = new FlatFileItemReader<>();

    reader.setResource(inputFileResource(null));
    reader.setLineMapper(new DefaultLineMapper<ProductDTO>() {{
                    setLineTokenizer(new DelimitedLineTokenizer() {{
            setNames("field1", "field2", "field3", "field4", "field5", "field6","field7", "field8", "field9", "field10" ,"field11" );
            setDelimiter("\u001c");
        }});
        setFieldSetMapper(new ProductFileRowMapper());
    }});
    reader.setRecordSeparatorPolicy(new DefaultRecordSeparatorPolicy("\u0004")
    {});
    return reader;

我尝试设置 DefaultRecordSeparatorPolicy 但它不起作用。基本上我正在研究如何将换行符以外的任何字符设置为行分隔符。我的输入文件是一个单行大文件,每条记录由 EOT 分隔。任何帮助在这里表示赞赏。

【问题讨论】:

  • I tried setting DefaultRecordSeparatorPolicy but it does not work.:您正在创建一个new DefaultRecordSeparatorPolicy("\u0004"),但这里的参数是quoteCharacter,而不是分隔符。您是否尝试过使用后缀设置为\u0004SuffixRecordSeparatorPolicy
  • 感谢您的建议。它对我有用
  • 很高兴听到它有帮助。我为此添加了答案,请接受。

标签: spring file spring-batch delimiter


【解决方案1】:

我尝试设置 DefaultRecordSeparatorPolicy 但它不起作用。

您正在创建一个新的DefaultRecordSeparatorPolicy("\u0004"),但这里的参数是quoteCharacter,而不是分隔符。您需要使用后缀设置为\u0004SuffixRecordSeparatorPolicy

【讨论】:

    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    相关资源
    最近更新 更多