java读取csv文件忽略bom头_读取含有BOM头的文件遇到的问题

本文介绍了在Java中读取CSV文件时遇到的BOM头问题,导致解析过程中列名校验失败。通过分析问题,发现文件开头存在Unicode字符uFEFF,即BOM头。为了解决这个问题,文章提出了使用Apache Commons IO的BOMInputStream来过滤BOM头,从而正确读取并解析CSV文件内容。
摘要由CSDN通过智能技术生成

需求是读取一个csv文件,然后解析成对应的数据结构。csv必须包含指定的某些列,通过列名header来进行校验。

解析配置文件的方法。

1 public List buildConfigData(finalMultipartFile file) {2

3 CsvReader csvReader = null;4 ListquestionDataList;5 try (DataInputStream inputStream = newDataInputStream(file.getInputStream())) {6 csvReader = new CsvReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")));7

8 if (!csvReader.readHeaders()) {9 returnLists.newLinkedList();10 }11

12 final String[] headers =csvReader.getHeaders();13 getAndCheckHeader(headers);14 questionDataList =getQuestionData(csvReader, headers);15

16 } catch (finalIOException e) {17 log.error("解析配置文件错误", e);18 throw new FatalException("解析配置文件错误");19 } finally{20 if (csvReader != null) {21 csvReader.close();22 }23 }24 returnquestionDataList;25 }

其中,检查header的方法:

private static final Set NEEDED_COLUMNS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值