2011-08-19 2 views
4

나는 자바 파일을 만들고 "20 Bruce Wayne"이라는 단어를 쓰는 것을 허용하는 자바 자습서를 읽었습니다. 주 클래스에서 호출되는 마지막 메서드는 closeFile()이라는 이름으로 텍스트 파일을 만든 후 "닫습니다".는 Layman의 용어로 Java에서 close() 메서드를 설명합니다.

정말 열지 않으면 파일을 닫아야합니까? "open"이라 함은 메모장 편집기 (IDE가 아닌)가 "20 Bruce Wayne"이라는 단어로 팝업된다는 뜻입니다. 제 질문에 평신도의 말로 대답하십시오.

Main.java :

class apple { 
    public static void main(String[] args) 
    { 
     createfile g = new createfile(); 
     g.openFile(); 
     g.addRecords(); 
     g.closeFile(); 
    } 
} 

createfile.java 파일입니다

public class createfile { 
    private Formatter x; 

    public void openFile(){ 
     try{ 
      x = new Formatter("supermanvsbatman.txt"); 
     } 
     catch(Exception e){ 
      System.out.println("you have an error"); 
     } 
    } 
    public void addRecords(){ 
     x.format("%s%s%s","20 ", "Bruce ", "Wayne "); 
    } 
    public void closeFile(){ 
     x.close(); 
    } 
} 

답변

9

"열은,"OS가 잠겨로, 일반적으로 그래서는 삭제할 수 없습니다 파일을 표시합니다 다른 프로세스가 사용되는 동안. x.close()은 잠금을 실행 취소하여 OS 및 다른 프로세스가 파일로 원하는 작업을 수행 할 수있게합니다.

+3

.close()를 사용하지 않으면 다른 어떤 문제가 발생할 수 있습니까? – user701510

+2

@ user701510 : 운영 체제뿐 아니라 백그라운드에서 사용하는 저장 용량에 따라 여러 가지 문제가 발생할 수 있습니다. 파일을 닫지 않으면 OS의 최대 열린 파일 핸들 수에 도달 할 수 있습니다. 특정 스토리지 시스템은 파일을 닫으면 디스크로만 플러시 할 수 있습니다 ... – home

+0

특정 운영 체제에서 파일을 닫지 않으면 전체 파일을 보유하고있는 메모리가 아닌 경우 메모리의 포인터가 닫히지 않습니다. 다시 부팅 할 때까지 돌아 오십시오. –

5

Sold Out 활동가의 답변 외에도 파일과 같은 I/O 작업으로 작업 할 때 스트림을 사용하여 파일에 텍스트를 추가하거나 파일에서 텍스트를 추출하는 중입니다. 이 스트림은 데이터를 잃어 버릴 수 있으므로 프로그램을 종료 할 때 close() 메서드를 사용하여 닫아야합니다. 저장 작업과 같아서 파일을 저장하지 않으면 (스트림을 닫을 때) 파일의 변경 사항을 잃게됩니다.

이 부분은 examplethis입니다.

+1

스트림을 플러시한다는 것은 무엇을 의미합니까? – user701510

+2

Flush()는 스트림을 언로드 할 수있는 메서드입니다. 예를 들어, 파일에 줄을 쓰는 경우이 줄을 버퍼링하고 버퍼에 넣은 다음 스트림을 플러시하기 때문에이 줄은 즉시 파일에 기록되고 버퍼는 버퍼에 채워지기 때문에 효율성을 위해 스트림을 플러시합니다. 사용중인 다른 데이터를받을 준비가되었습니다. 일반적으로 close()를 호출하면 flush()를 호출하여 버퍼를 정리하고 데이터를 쓰고 스트림을 닫습니다. 메소드에 대한 자세한 정보는 다음을 참조하십시오. http://download.oracle.com/javase/6/docs/api/java/io/OutputStream.html –

1

은 쓰기 모드로 열리는 파일을 닫는 데 사용됩니다. 왜냐하면 우리는 close() 메서드 을 사용하여 데이터를 보호하기 때문에/(java.io.IOEXCEPTION)과 같은 예외를 throw합니다. 객체에 대한 존중은 public이기 때문에 close()는 인스턴스임을 의미하므로 객체에 대한 호출이므로 어떤 경우에는 null을 얻는 객체를 얻는 기회가있다 null 참조와 관련된 메소드 호출 NullPointerException이 코드이므로 finally 블록의 코드는 우리가 열어 본 파일과 마지막으로 블록을 모두 버림을 의미합니다.

관련 문제