Spring Batch: Reading fixed-width file without line breaks

后端 未结 2 1086
天命终不由人
天命终不由人 2020-12-01 17:41

I\'ve a fixed length content Flatfile which contains sample records like below and has no delimiter as such it contains special hex characters and

2条回答
  •  无人及你
    2020-12-01 18:17

    You can utilize the isStrict flag to get read of this issue - use the tokenizer separately and your issue will be solved

    I have implemented - fixedLengthTokenizer as below

      @Value("classpath:mainframe.txt")
        private Resource resource;
    
    
    
     @Bean
        public FlatFileItemReader fixLengthItemReader(){
            FlatFileItemReader reader = new FlatFileItemReader();
            reader.setResource(resource);
            reader.setLineMapper(new DefaultLineMapper() {
                {
                    setLineTokenizer(fixedLengthTokenizer());
                    setFieldSetMapper(new BeanWrapperFieldSetMapper() {
                        {
                            setTargetType(Customer.class);
                        }
                    });
                }
            });
            return reader;
        }
    
    
    
    @Bean
    public FixedLengthTokenizer fixedLengthTokenizer() {
        FixedLengthTokenizer tokenizer = new FixedLengthTokenizer();
        tokenizer.setColumns(new Range[] { new Range(3, 6), new Range(7, 13), new Range(14, 15), new Range(14, 15) });
        tokenizer.setNames(new String[] { "firstValue", "secondValue", "thirdValue", "fourthValue" });
        tokenizer.setStrict(false);
        return tokenizer;
    }
    

    Note - do remember to set this flag --> tokenizer.setStrict(false);

提交回复
热议问题