需求是读取一个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