Oracle docs api : http://docs.oracle.com/javase/6/docs/api/java/io/DataOutputStream.html

Oracle docs api : http://docs.oracle.com/javase/6/docs/api/java/io/FileOutputStream.html

DataStream은 외부 출력 및 입력을 위한 Class이고

FileStream은 파일 출력 및 입력을 위한 Class이다.

Java Socket Server에서 Data 송수신을 위해서는

DataStream을 사용 해야 된다...?

Stream.flush() 왜 써야하나?

출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNO=8&no=148519&ref=148505

Flush는 중요합니다.

일반적으로 I/O는 느리죠.... 때문에 I/O에 뭘 쓰거나 읽으면.. 반응속도가 느립니다.

디스크를  예를 들면.. 디스크 내부를 섹터 같은 공간으로 나누어 놓는데, 그게 1024나 512등 다양한 크기 인데

거기에 10바이트씩 10번 쓴다면.. Seek 로 이동시켜서.. 타이밍 마춰서.. 쓰는 작업을 10번 하는 것보다

버퍼에 쌓아서.. 한번에 쓰는게 효과적이기 때문이죠

여기서 문제

내가 데이터를 버퍼에 쓰고나서 그냥 프로그램을 끝내면, 아니면 시스템을 끄면 버퍼에 잇는게 그냥 사라진다는 것이죠

읽기용이라면 무시해도 되겠지만.. 쓰기용이었다면.. 마지막 데이터가 저장 안될 수 잇는 복불복의 상황.