BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("111");
bw.flush();
bw.close();
BufferedWriter bw2 = new BufferedWriter(new OutputStreamWriter(System.out));
bw2.write("222");
bw2.flush();
bw2.close();
실행결과에 111만 출력된다. 디버깅 해보면 둘은 다른객체같은데도 close시에 아예 출력자체가 안된다.
그 이유가 뭘까?
스트림을 닫고난 뒤에 다시 여는게 안되는것일까?
- 어떤사람은 이게 111,222가 모두 출력이된다고 해서 잘 모르겠다
- 만약에 111만 출력이 된다면 다음상황이 아닐까 생각중이다
- 객체가 여러개 생성이 되더라도 스트림은 Printstream 하나를 공유하고, 스트림을 닫아버리면 객체를 생성해서 다시여는게 안된다. <- 가아닐까? 그런데 왜 어떤사람은 둘다 출력이되는것일까? 코드가 똑같은데
- 테스트코드에서랑 psvm(public static void main)에서 writer 객체가 다르다.
테스트코드에서는 해당 객체가 close되더라도, 새로 생성하면 해당 객체를 다시 재활용이 가능한데,
psvm에서는 close하면 System.out 전역객체에 Null로 되어 writer가 없는거같습니다
bw.write(숫자)
스트림
- 자바에서는 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)이라는 흐름을 통해 다룹니다.
스트림(stream)이란 실제의 입력이나 출력이 표현된 데이터의 이상화된 흐름을 의미합니다.
즉, 스트림은 운영체제에 의해 생성되는 가상의 연결 고리를 의미하며, 중간 매개자 역할을 합니다.
- 그리고 스트림을 닫아줘야 다른곳에서 여기에 접근이 가능함
http://www.tcpschool.com/java/java_io_stream