逐行读取文件并使用Java 8流程解析字符串列表中的每一行

时间:2017-05-23 12:56:25

标签: java-8 java-stream

我试图逐行读取文件,同时解析该行并将数据存储在MonitoredData列表中。

MonitoredData具有实例变量:startTime,endTime,activityLabel。

该文件如下所示:

2011-11-28 02:27:59     2011-11-28 10:18:11     Sleeping        
2011-11-28 10:21:24     2011-11-28 10:23:36     Toileting   
2011-11-28 10:25:44     2011-11-28 10:33:00     Showering   
2011-11-28 10:34:23     2011-11-28 10:43:00     Breakfast   
2011-11-28 10:49:48     2011-11-28 10:51:13     Grooming    
2011-11-28 10:51:41     2011-11-28 13:05:07     Spare_Time/TV   

我想读取此文件并将每个startTime,endTime,activityLabel存储在MonitoredData列表中

 List<MonitoredData>

例如:

startTime : 2011-11-28 02:27:59
endTime : 2011-11-28 10:18:11
activityLabel: Sleeping 

1 个答案:

答案 0 :(得分:2)

应该看起来像这样。首先获取这些行,然后将它们分割为"\\s\\s+"(至少两个空格),然后生成一个标记数组。 对于每个数组实例,生成MonitoredData并将该数据收集到List

 Files.lines(Paths.get("/tmp/test.txt"))
            .map(s -> s.split("\\s\\s+"))
            .map(arr -> new MonitoredData(arr[0], arr[1], arr[2]))
            .collect(Collectors.toList());

显然,您需要从arr[0]arr[1]转换为您正在使用的Date