我正在尝试读取可能包含特殊字符的文件,并且我想对其进行验证,但是当读者接受此文件时,它什么也不做 我正在使用这样的阅读器:
<!-- 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不打印任何内容,如果我发送字母数字,它将打印它,但是我必须处理特殊字符以发送警告,例如“数据不正确”。