读取CSV文件代码:
Reader reader = new InputStreamReader(new BOMInputStream(file.getInputStream()), StandardCharsets.UTF_8);
CSVParser csvParser = CSVFormat.RFC4180.withFirstRecordAsHeader().parse(reader);
List<CSVRecord> csvRecordList = csvParser.getRecords();
log.info("Total Record Number : {} " , csvParser.getRecordNumber());//全部的列
List<Map<String, String>> recordList = new ArrayList<>();
csvRecordList.forEach(cscR -> recordList.add(cscR.toMap()));
....
record.get(key)
...
通过csvParser.getHeaderMap().keySet()的方式将表格头部读出来,控制台输出并无异常,但是就是按照对应的键值读到为空。后来发现返回到postman Json字符串键值前面有莫名的字符读不出来,但也是乱码,后来放到redis中,redis中显示了\xef\xbb\xbf多余字符,果然是编码的问题。解决方式就是因为加上了new BOMInputStream() 来创建流,最终可以正确读取键值。
网友评论