Java:处理要从文件

时间:2017-06-10 09:35:12

标签: java java-8 stream java-stream

我大学的实验室我正在开发一个Java系统,它能够存储来自文件的数据(给定文件路径为String)。我试图使用路径中的一串线来处理问题,但我在早期阶段陷入困境。该文件的结构如下:一行的不同字段用“;”分隔每行以“P”或“D”开头。根据这个参数,我将使用该行的参数来创建“患者”对象或“医生”对象,随后存储在两个不同的地图(患者或医生)中。我做了以下事情:

Path p= Paths.get(path);
Stream <String> lines=Files.lines(p, StandardCharsets.UTF_8);
lines.flatMap(l->Stream.of(l.split("; ")))....

我的想法是在行的开头检查单词,并且根据该单词,剩余元素将用作能够创建和存储相应对象(insertPatient或insertDoctor)的方法的参数。但我对如何做到这一点并不了解。我知道不同的方法来做同样的事情,但我真的想用流来开发解决方案,至少在阅读不同行的过程中。 谢谢, 詹卢卡。

1 个答案:

答案 0 :(得分:3)

try (Stream<> lines = Files.lines(p, StandardCharsets.UTF_8)) { // 1
    lines.map(line -> line.split(";"))                          // 2
         .forEach(lineAsArray -> {
             if (lineAsArray[0].equals("D")) {
                 insertDoctor(lineAsArray);
             }
             else if (lineAsArray[0].equals("P")) {
                 insertPatient(lineAsArray);
             }
         });
}
  1. 使用try-with-resources确保流已关闭,文件阅读器已关闭
  2. 不要使用flatMap,因为你想要在完整的行上行动,而不是在单元格上行动。