2014-12-10 2 views
1

모든 내부 스트림과 내부 스트림을 닫으려면 가장 바깥 쪽 스트림을 닫을 수 있으며 내부 스트림을 처리 할 것입니다.하지만 내부 스트림을 닫거나 필요한 작업을 수행하기 전에 데이터를 완전히 읽고 쓰는 것을 기다립니다.가장 바깥 쪽 스트림이 닫힐 때 내부적으로 어떤 일이 발생합니까?

내부 스트림을 닫을 때 내부 스트림에서 내부 함수가 어떻게 호출되는지 파악하고 싶습니다. 아래 코드에서와 같이

public static void serialize(Object obj, String fileName) 
     throws IOException { 

    FileOutputStream fos = new FileOutputStream(fileName); 
    BufferedOutputStream bos = new BufferedOutputStream(fos); 
    ObjectOutputStream oos = new ObjectOutputStream(bos); 
    bos.flush(); 
    oos.writeObject(obj); 
    oos.close(); 
} 

객체 스트림을 닫으면 File Stream이 기능을 수행 할 때까지 기다릴 것입니까?

답변

1

예, ObjectOutputStream을 닫으면 모든 보류중인 쓰기 조작이 수행됩니다.
ObjectOutputStream은 innerStream.flush()을 호출하기 때문에 close()을 호출해야합니다.
또한 BufferedOutputStream은 자체 플러시 메서드로 innerStream.flush()을 호출합니다.

내가 아는 모든 버퍼링 스트림 클래스.

관련 문제