问题描述
我需要处理一个以EOT字符作为记录结尾但没有换行符的文件。我正在使用Spring批处理进行批量处理。我无法将十六进制值“ \ u0004”设置为要处理的行字符的结尾的EOT
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分隔。感谢您的任何帮助。
解决方法
我尝试设置DefaultRecordSeparatorPolicy,但是它不起作用。
您正在创建一个新的DefaultRecordSeparatorPolicy("\u0004")
,但是此处的参数是quoteCharacter
,而不是定界符。您需要使用后缀设置为SuffixRecordSeparatorPolicy
的{{1}}。