2017-05-23 1 views
1

줄부터 한 줄씩 파일을 읽으려고하고 동시에 줄을 구문 분석하여 MonitoredData 목록입니다.파일을 한 줄씩 읽고 Java 8 증기를 사용하여 문자열 목록의 각 줄을 구문 분석합니다.

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 

내가 MonitoredData

예를 들어
List<MonitoredData> 

의 목록에서 startTime을, endTime- 사용자, activityLabel의 각이 파일을 읽고 저장할 :

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

@ holi-java 역시 정확히 같은 데이터입니다! 젠장 ... – Eugene

+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()); 

은 분명히 Date 사용중인에 arr[0]arr[1]에서 필요한 변환을 수행.

+0

감사합니다. 작동 중입니다! – Tudor

+2

당신이 스트림으로 할 일이라면'String []'으로 모으는 것이고, 간단한''Pattern.compile (pattern) .splitAsStream (s) ''을 사용할 필요가 없습니다. split (pattern)'이 할 것입니다. – Holger

+1

@Holger shoot! 나는 처음에 목록을 수집했다 ... – Eugene

관련 문제