【发布时间】: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,而不是分隔符。您是否尝试过使用后缀设置为\u0004的SuffixRecordSeparatorPolicy? -
感谢您的建议。它对我有用
-
很高兴听到它有帮助。我为此添加了答案,请接受。
标签: spring file spring-batch delimiter