Spring批处理中平面文件中的空格问题

时间:2013-01-29 04:54:51

标签: java spring-batch

我使用Spring批处理框架使用FlatFileItemReader解析固定长度的平面文件,其中 lineMapper DefaultLineMapper fieldSetMapper 为PassThroughFieldSetMapper和< strong> lineTokenizer 作为PatternMatchingCompositeLineTokenizer。

但由于文件中的值可能包含空格,因此我遇到了有关处理的问题。删除任何前导或尾随空格后, FieldSet 会为我提供值。我希望带有空格的值(如果有的话)用于某些验证目的。

我是Spring Batch框架的新手。有人可以告诉我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

我知道这是很久以前问的,但如果有人会遇到同样的问题:

问题在于FieldSet类,因为当您调用fieldSet.readString()时,它将调用readAndTrim()方法并返回修剪后的字符串。 要保留保留空格的字符串,您应该调用fieldSet.readRawString()

答案 1 :(得分:0)

我也只想回答这个问题:

您可以创建自己的FieldMapper实现,并将其自动连接到lineMapper.setFieldSetMapper()

@Component
class CustomFieldSetMapper implements FieldSetMapper<Partnership>{

    @Override
    public Partnership mapFieldSet(FieldSet fieldSet) throws BindException {

        return new Partnership(
                partnerCrmId:fieldSet.readString('partnerCrmId'),
                partnerType: fieldSet.readString('partnerType'),
                customerCrmId: fieldSet.readString('customerCrmId'),
                startDate: fieldSet.readString('startDate'),
                endDate: fieldSet.readString('endDate'),
                clientId: fieldSet.readRawString('clientId'),
                status: fieldSet.readString('status'),
                type: fieldSet.readString('type'),
                providerCode: fieldSet.readString('providerCode'),
                lastModifiedDate: fieldSet.readString('lastModifiedDate')
        )

    }
}