| 178 | } |
| 179 | } |
| 180 | public static Stream<Object> read_csv(Path filename,List<String> cols){ |
| 181 | try { |
| 182 | List<String> headers=Arrays.asList(Files.lines(filename).findFirst().get().replace( "\uFEFF", "").split(",",-1)); |
| 183 | List<Integer> col_index=cols.stream().filter(headers::contains).map(headers::indexOf).collect(Collectors.toList()); |
| 184 | if (col_index.size()!=cols.size()){ |
| 185 | System.out.println("字段名称与CSV文件不匹配"); |
| 186 | System.exit(1); |
| 187 | } |
| 188 | return Files.lines(filename).skip(1).map(x->replace_csv(x)).map(x->col_index.stream().map(Arrays.asList(x.split(",",-1))::get)); |
| 189 | } catch (IOException e) { |
| 190 | System.out.println("文件读取失败"); |
| 191 | e.printStackTrace(); |
| 192 | } |
| 193 | return null; |
| 194 | } |
| 195 | private static String replace_csv(String csv){ |
| 196 | Matcher m=Pattern.compile("\"(.*?)\"").matcher(csv); |
| 197 | String s; |