пропустить запись нижнего колонтитула и заголовка в весенней партии Flatfile Reader - PullRequest
0 голосов
/ 04 июня 2019

У меня есть весеннее пакетное задание для чтения файла CSV, файл имеет заголовок и трейлер.Чтобы пропустить заголовок, просто пропустите первую строку, но как пропустить запись нижнего колонтитула?

это мой читатель для упрощения:

<bean id="flatFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader"
        scope="step">

        <property name="resource" value="file:#{jobParameters[file]}" />
        <property name="linesToSkip" value="1" />
        <property name="lineMapper">

            <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">

                <property name="fieldSetMapper">

                    <bean class="ben.Mapper" />
                </property>

                <property name="lineTokenizer">

                    <bean
                        class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                        <property name="delimiter" value="," />
                    </bean>
                </property>

            </bean>

        </property>

    </bean>

1 Ответ

0 голосов
/ 05 июня 2019

Попробуйте это:

public class SkipFooterLineMapper extends DefaultLineMapper<XXX> {

    @Override
    public XXX mapLine(String line, int lineNumber) throws Exception {
        // skip the footer as footer like this: T~2952
        if(line != null && line.split("~").length == 2) {  
            return null;
        }
        return super.mapLine(line, lineNumber);
    }

}

FlatFileItemReader<XXX> bean = new FlatFileItemReader<>();
bean.setResource(new FileSystemResource(pathToFile));

// skip the header
bean.setLinesToSkip(1);
bean.setLineMapper(lineMapper());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...