java - spring flatfile:块读取 null 最后一行
问题描述
我有方法,它接收上传的 csv 平面文件,处理它并打印所有值。
问题是,它仍然尝试在最后一次读取并处理该值并引发 nullpointerexception 错误。我该怎么做。?
在循环结束时,我添加了,while (newPs != null)
所以它不应该再处理循环了。
public void readPsFile(MultipartFile batchFile) throws Exception {
FlatFileItemReader<ProductService> reader = new FlatFileItemReader<>();
DelimitedLineTokenizer delimitedTokeniser = new DelimitedLineTokenizer();
delimitedTokeniser.setNames(new String[]{ "name"});
DefaultLineMapper<ProductService> lineMapper = new DefaultLineMapper<ProductService>();
lineMapper.setLineTokenizer(delimitedTokeniser);
lineMapper.setFieldSetMapper(new BeanWrapperFieldSetMapper<ProductService>() {{setTargetType(ProductService.class);}});
ByteArrayResource y= new ByteArrayResource(batchFile.getBytes());
reader.setResource(y);
reader.setLineMapper(lineMapper);
reader.setLinesToSkip(1); //do not read the first line of the csv file.
reader.open(new ExecutionContext());
reader.open(new ExecutionContext());
ProductService newPs = null;
do {
try {
newPs = reader.read();
System.out.println("--->"+newPs.getName());
}catch(Exception e) {
e.printStackTrace();
} while (newPs != null);
}
解决方案
因为在调用getName()
. 不要do/while
用于此:
while ((newPs = reader.read()) != null) {
System.out.println("--->"+newPs.getName())
}
推荐阅读
- python - 使用 PyJWT 在 Python 中解码 Firebase JWT
- javascript - 在日期字符串中指定的时区显示日期
- android - Android Kotlin - viewBindinding 不起作用
- git - Git LFS 缺少文件
- nestjs - 如何使用 TypeORM 加入相关的树存储库
- node.js - 转换后方法推送在nodejs中不起作用
- python - 用 Cython 类替换 Cython 结构
- r - 当年份列在 R 中包含多年时,如何找到包含最大值及其相关年份的行
- ios - Swift 如何解决内存“泄漏”
- reactjs - 使用 GitHub 操作进行部署