Пропустить количество строк нижнего колонтитула в пакете Spring

Я использую FlatFileItemReader читать плоский файл с разделителями. Пока я мог пропустить количество заголовков с полем linesToSkipЯ не смог пропустить нижние колонтитулы по количеству строк.

1 ответ

Решение

Вы можете создать собственный маппер, в котором вы можете пропустить совпадение с регулярным выражением или номер строки.

public class CustomLineMapper extends DefaultLineMapper<FieldSet> {
    @Setter
    private int totalItemsToRead;
    @Override
    public FieldSet mapLine(String line, int lineNumber) throws Exception {
        if(lineNumber > totalItemsToRead){
            return null;
        }
        return super.mapLine(line, lineNumber);
    }
}

Наконец зарегистрируйте пользовательский преобразователь строк в FlatFileItemReader

CustomLineMapper lineMapper = new CustomLineMapper();
    lineMapper.setTotalItemsToRead(totalLinesInFile - numberOfLinesToSkipInFooter);

FlatFileItemReader<FieldSet> reader = new FlatFileItemReader<>();
// skip headers
reader.setLinesToSkip(linesToSkipInHeader);
// skip footer
reader.setLineMapper(lineMapper);
Другие вопросы по тегам