| 222 | } |
| 223 | } |
| 224 | public static Stream<Object> read_csv(Path filename,List<String> cols){ |
| 225 | try { |
| 226 | List<String> headers=Arrays.asList(Files.lines(filename).findFirst().get().replace( "\uFEFF", "").split(",",-1)); |
| 227 | List<Integer> col_index=cols.stream().filter(headers::contains).map(headers::indexOf).collect(Collectors.toList()); |
| 228 | if (col_index.size()!=cols.size()){ |
| 229 | System.out.println("字段名称与CSV文件不匹配"); |
| 230 | System.exit(1); |
| 231 | } |
| 232 | return Files.lines(filename).skip(1).map(x->replace_csv(x)).map(x->col_index.stream().map(Arrays.asList(x.split(",",-1))::get)); |
| 233 | } catch (IOException e) { |
| 234 | System.out.println("文件读取失败"); |
| 235 | e.printStackTrace(); |
| 236 | } |
| 237 | return null; |
| 238 | } |
| 239 | private static String replace_csv(String csv){ |
| 240 | Matcher m=Pattern.compile("\"(.*?)\"").matcher(csv); |
| 241 | String s; |