본문 바로가기

강좌/JAVA I/O

JAVA I/O (자바입출력) - DataInputStream 과 DataOutputStream

처음에 DataInputStream과 FileInputStream과의 차이점이 애매하다고 생각했다.

그냥 파일에 쓰는거 똑같은데 아무거나 쓰면 안되나하고.


DataInputStream은 이진 데이터(0,1)를 입출력 할때 사용한다.


예를 들어 10이나 3.14를 입력할때 FileInputStream으로 하면 파일에 써지지만

만약 10은 int(4바이트)형으로 3.14는 double(8바이트)형으로 저장을 할때 쓴다.


결국 해당 value의 데이터형을 그대로 가지고 저장 된다.


DataInput / Output Stream은 일종의 필터스트림이다.

참고로 상위 클래스가 FilterInputStream 이란 놈이다.


그리고 DataInputStream과 DataOutputStream은 각 타입(int, float, double...)에 해당하는 

메소드들을 제공한다.

자세한건 자바API에서 보기 바란다. (http://docs.oracle.com/javase/6/docs/api/)


예를 들어 보자.


DataOutputSTream을 써서 데이터를 저장하였다.



그럼 데이터가 잘 저장이 되었는지는 지정해준 폴더를 가서 확인하면 된다.

아래는 저장 결과..



그런데 데이터를 읽을 수가 없다. 바로 데이터 형으로 저장이 되었기때문에 인코딩이 안되서 읽지를 못한다.

메모장으로는...


그럼 어떻게 확인을 하느냐...?


다시 이걸 읽어서 찍어 보면 된다.


아래는 결과.


항상 Stream을 열었으면 close를 해주자.