OpenCSV分隔符设置无效?如何正确修改自定义分隔符
解决CsvToBeanBuilder分隔符不生效的问题
你代码里已经调用了withSeparator('|')但仍用逗号分隔,通常是这几个原因导致的,对应解决方法:
检查实体类注解配置
如果你的CsvProductDto类使用了@CsvBindByName或@CsvBindByPosition这类注解,要确认注解里是否硬编码了分隔符参数。比如注解里写了separator = ','会覆盖Builder的设置,要么去掉该参数,要么把注解里的分隔符改成'|',和Builder保持一致。错误示例:
@CsvBindByName(separator = ',') private String productName;修正后:
@CsvBindByName private String productName; // 或者 @CsvBindByName(separator = '|') private String productName;换用CSVReaderBuilder手动配置
部分旧版本OpenCSV的CsvToBeanBuilder.withSeparator可能存在兼容问题,你可以先手动创建CSVReader并指定分隔符,再传给CsvToBeanBuilder:CSVReader csvReader = new CSVReaderBuilder(new BufferedReader(new InputStreamReader(content))) .withSeparator('|') .withIgnoreLeadingWhiteSpace(true) .build(); List<CsvProductDto> products = new CsvToBeanBuilder<CsvProductDto>(csvReader) .withType(CsvProductDto.class) .build() .parse();验证CSV文件格式
确认你的目标CSV文件确实是用|作为字段分隔符,而不是逗号。有时候问题出在文件本身,而非代码配置。
内容的提问来源于stack exchange,提问作者razzledazzle88
相关产品推荐
相关产品推荐

