본문 바로가기

Java

[Stream] DataInputStream, DataOutputStream


DataInputStream과 DataOutputStream의 예제..

public class DataStreamHandle {
 public static void main(String[] args) throws Exception {
  FileOutputStream fos = new FileOutputStream("d:/data.txt");
  DataOutputStream dos = new DataOutputStream(fos);
  
  dos.write(100);
  dos.writeInt(100);
  dos.writeFloat(3.14f);
  dos.writeFloat(4.14f);
  dos.writeChar('A');
  dos.close();
  
  FileInputStream fis = new FileInputStream("d:/data.txt");
  DataInputStream dis = new DataInputStream(fis);
  
  int i = dis.read();
  int i2 = dis.readInt();
  float f = dis.readFloat();
  float f2 = dis.readFloat();
  char c = dis.readChar();
  dis.close();
  
  System.out.println( i + "," + i2 + "," + f + "," + f2 + "," + c);
 }
}

특정 파일에 data형에 따라서 Data를 작성한다. 위 코드에 의해 작성된 data.txt를 일반 에디터로 열어보면
아래와 같이 나온다.

d   d@H憁@꼣?A.. 뭥미?

마치 바이너리 처럼...

읽어 들일때는 write한 순서대로 read 해야한다. 예를 들면
 int i = dis.read();
  int i2 = dis.readInt();
  float f = dis.readFloat();
  char c = dis.readChar();
이렇게 read를 하게 되면 f 이후로는 깨져서 데이터가 들어오게 된다.

파일을 이용해서 특정 데이터 구조를 유지하고 사용하기 위해서 쓰면 괜찮을 것 같다..