春季批处理-READER,未读取特殊字符

时间:2020-07-27 15:09:58

标签: spring-batch batch-processing flatfilereader

我正在尝试读取可能包含特殊字符的文件,并且我想对其进行验证,但是当读者接受此文件时,它什么也不做 我正在使用这样的阅读器:

<!-- READERS -->
    <bean id="itemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
        <property name="strict" value="false" />
        <!-- Read a file -->
        <property name="resource" value="myFolder" />
        <property name="encoding" value="UTF-8" />

        <!-- Mapper -->
        <property name="lineMapper">
            <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
                <!-- split it -->
                <property name="lineTokenizer">
                    <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                        <property name="delimiter" value="|" />
                        <!-- Layout -->
                        <property name="names" value="idUser" />
                    </bean>
                </property>

                <!-- Wrapper -->
                <property name="fieldSetMapper">
                    <bean class="userItemReader">
                    </bean>
                </property>
            </bean>
        </property>
    </bean>

在我的userItemReader类中,我这样做:

@Override
    public Map<String, Object> mapFieldSet(FieldSet fieldSet) {
        Map<String, Object> dataIn = new HashMap<>(65);
        LOGGER.info("fieldset {}",fieldSet.readString("idUser"));
        
        if (fieldSet.getFieldCount() > 0 && !fieldSet.readString(0).trim().isEmpty()) {
            dataIn.put("idUser", fieldSet.readString("idUser"));
        }
        LOGGER.info("Map to process {}", dataIn);
        return dataIn;
    }

但是在我的文件中,它具有特殊字符,例如:!“#$%# LOGGER不打印任何内容,如果我发送字母数字,它将打印它,但是我必须处理特殊字符以发送警告,例如“数据不正确”。

我查看服务器日志,发现此异常,仅在发送#个字符时抛出 enter image description here

0 个答案:

没有答案