【发布时间】:2018-08-08 04:39:09
【问题描述】:
我从春天开始检查这个项目: https://github.com/spring-guides/gs-batch-processing
来源:https://spring.io/guides/gs/batch-processing/
我将“sample-data.csv”中的“,”替换为“tab”:
Jill Doe
Joe Doe
Justin Doe
Jane Doe
John Doe
然后我将新的分隔符添加到阅读器:
@Bean
public FlatFileItemReader<Person> reader() {
return new FlatFileItemReaderBuilder<Person>()
.name("personItemReader")
.resource(new ClassPathResource("sample-data.csv"))
.delimited()
.delimiter(DelimitedLineTokenizer.DELIMITER_TAB) // NEW DELIMITER
.names(new String[]{"firstName", "lastName"})
.fieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {{
setTargetType(Person.class);
}})
.build();
}
当我启动我得到这个错误:
Caused by: org.springframework.batch.item.file.transform.IncorrectTokenCountException: Incorrect number of tokens found in record: expected 2 actual 1
at org.springframework.batch.item.file.transform.AbstractLineTokenizer.tokenize(AbstractLineTokenizer.java:142) ~[spring-batch-infrastructure-4.0.1.RELEASE.jar:4.0.1.RELEASE]
at org.springframework.batch.item.file.mapping.DefaultLineMapper.mapLine(DefaultLineMapper.java:43) ~[spring-batch-infrastructure-4.0.1.RELEASE.jar:4.0.1.RELEASE]
at org.springframework.batch.item.file.FlatFileItemReader.doRead(FlatFileItemReader.java:180) ~[spring-batch-infrastructure-4.0.1.RELEASE.jar:4.0.1.RELEASE]
... 50 common frames omitted
我尝试过使用“@”分隔符 -> 它可以工作。 由于某种原因,我无法使用制表符分隔符...
当然,在我的实际项目中,我有一个带有“制表符”分隔符的输入文件...
这里有什么解决办法吗?
【问题讨论】:
-
你的第二行看起来很奇怪:
Joe Doe也许标记器抱怨这个? -
这个问题有一个未解决的票:jira.spring.io/browse/BATCH-2738。下个版本会修复
标签: java spring spring-batch