繁体   English   中英

Java:处理要从文件读取的流

[英]Java: Handling a stream to read from file

对于我大学的一个实验室,我正在用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)的方法的参数。 但是我还不知道如何做到这一点。 我知道有不同的方法可以做到这一点,但是我真的想至少在读取不同行的过程中使用流来开发解决方案。 谢谢,詹卢卡。

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,因为您要对整行而不是对单元格进行操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM