2013-02-13 4 views
2

BufferedReader가 절대로 닫히지 않으면 파문이 무엇인지 이해하려고합니까? 난 그냥 정적 코드의 많은이의 BufferedReader를 가지고 그들이 시도 ... catch..finally (br.close) 폐쇄되지 않습니다 것을 깨달았다BufferedReader가 닫히지 않습니다. 파급 효과는 무엇입니까?

대부분의 코드는 다음과 같습니다

public static boolean isProcessX24Success(String data) throws Exception 
{ 
    BufferedReader br = new BufferedReader(new StringReader(data)); 
    String line = ""; 
    String result = ""; 
    while ((line = br.readLine()) != null) 
    { 
     if (line.contains("SUCCESS X24")) 
      return true; 
    } 

    return false; 
} 

마지막으로 br.close가 없습니다. 문제가 있습니까? 그렇다면 무엇입니까? 이 메소드에 대한 호출 (그리고 그러한 성질로부터의 호출)은 여러 스레드가 아니라 순차적으로 수행된다.

답변

3

StringReader에서 사용하기 때문에 문제가 없습니다. BufferedReder의 범위를 벗어나면 가비지 수집 대상이됩니다. 시스템 리소스가 제대로 닫히지 않고 프로그램이 끝날 때까지 파일에 읽기 잠금이있을 수 있으므로 예를 들어 FileReader을 종료하지 않으면 문제가 발생합니다.

버퍼링으로 인해 데이터가 파일에 기록되지 않을 수 있으므로 글을 쓸 때 문제가 될 수 있습니다.