2016-10-21 4 views
0

다음을 TimeEntryBufferedReader으로 읽고 싶습니다. LocalDate with bufferedreader - java

Date: 11.10.2016 
start: 09:00 

은 내가 LocalDateString를 변환하는 방법을 알고,하지만 난 BufferedReader

내 코드에서 사용하는 방법을 모르고 내가이 필요 추측이 없다 :

Pattern p = Pattern.compile(
    " * Date:*(\\\d\\\ d)\\\ .(\\\d\\\d)\\\ .(\\\d\\\d\\\d\\\d) *" 
); 

public class TimeEntry { 
    private LocalDate date; 
    private LocalTime start; 

    public TimeEntry(LocalDate date, LocalTime start) { 
     this.date = date; 
     this.start = start; 
    } 

try { 
    File file = new File("MailDaten.txt"); 
    FileReader fileReader = new FileReader(file); 
    BufferedReader bufferedReader = new BufferedReader(fileReader); 
    StringBuffer stringBuffer = new StringBuffer(); 
    String line = null; 
    String[] line_split = line.split(" "); 
    String test = line_split[0]; 
    int s = test.split("@")[0].lastIndexOf(" "); 
    String name = test.substring(0,s); 
    String mail = test.substring(s+1,test.length()); 

    while ((line = bufferedReader.readLine()) != null) { 
     line_split = line.split(" "); 
     Daten.add(
      new MailEntry(
       name, mail, 
       new TimeEntry(
        line_split[3], line_split[3], line_split[4], line_split[5] 
       ) 
      ) 
     ); 

     stringBuffer.append(line); 
     stringBuffer.append("\n"); 
    } 
    fileReader.close(); 
    System.out.println("Contents of file:"); 
    System.out.println(stringBuffer.toString()); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

답변

1

어때? 당신은`문자열 # 일치 (정규식)를 호출하지 않도록해야

String input = "Date: 11.10.2016\r\n" + 
       "start: 09:00\r\n"; 
try (BufferedReader in = new BufferedReader(new StringReader(input))) { 
    String dateLine = in.readLine(); 
    String startLine = in.readLine(); 

    if (! dateLine.matches("Date: \\d{2}\\.\\d{2}\\.\\d{4}")) 
     throw new IllegalArgumentException("Invalid date line: " + dateLine); 
    if (! startLine.matches("start: \\d{2}:\\d{2}")) 
     throw new IllegalArgumentException("Invalid start line: " + startLine); 

    LocalDate date = LocalDate.parse(dateLine.substring(6), DateTimeFormatter.ofPattern("dd.MM.uuuu")); 
    LocalTime start = LocalTime.parse(startLine.substring(7), DateTimeFormatter.ofPattern("HH:mm")); 

    LocalDateTime dateStart = LocalDateTime.of(date, start); 
    System.out.println(dateStart); // prints: 2016-10-11T09:00 
} 
+0

는'루프는 –

+0

@NicolasFilotto 진정한 비용이 많이 드는 각 통화에서 정규식을 다시 컴파일되므로. 같은 이유로, 코드는 루프 내에 'DateTimeFormatter' 개체를 생성하지 않아야합니다. --- 오, 기다려. 내 코드에는 루프가 없습니다. – Andreas

+0

아, 맞습니다. 스트림이나 루프가 없으면 'BufferedReader'를 사용하는 것이 드문 것입니다. –

관련 문제