DataInput — 바이너리 스트림에서 기본형 데이터 읽기

DataInput — 바이너리 스트림에서 기본형 데이터 읽기

DataInput 인터페이스는 바이너리 스트림에서 바이트를 읽고 이를 Java 기본 타입 데이터로 재구성하는 기능을 제공해요. 또한 수정된 UTF-8 형식의 데이터로부터 String을 재구성하는 기능도 있어요. 이 인터페이스의 모든 읽기 루틴에서, 원하는 바이트 수만큼 읽기 전에 파일 끝에 도달하면 EOFException(일종의 IOException)이 던져집니다. 파일 끝이 아닌 다른 이유로 바이트를 읽을 수 없다면 EOFException이 아닌 IOException이 던져져요. 특히 입력 스트림이 닫혀 있으면 IOException이 던져질 수 있어요.

출처: Java API Reference

본문

DataInputDataOutput 인터페이스의 구현은 Unicode 문자열을 표준 UTF-8을 약간 수정한 형식으로 표현해요. 이 수정된 형식에서는 널 문자와 보조 문자 처리 방식, 바이트 표현이 표준과 다릅니다. 유니코드 문자는 한 글자당 1~3바이트로 표현되고, 보조 문자는 서로게이트 쌍 형태로 표현돼요.

이 인터페이스를 구현하는 클래스로는 DataInputStream, ObjectInputStream, RandomAccessFile 등이 있어요.

메서드

  • boolean readBoolean() — 입력 바이트 하나를 읽어 0이 아니면 true, 0이면 false를 반환해요.
  • byte readByte() — 입력 바이트 하나를 읽어 반환해요.
  • char readChar() — 입력 바이트 두 개를 읽어 char 값을 반환해요.
  • double readDouble() — 입력 바이트 여덟 개를 읽어 double 값을 반환해요.
  • float readFloat() — 입력 바이트 네 개를 읽어 float 값을 반환해요.
  • void readFully(byte[] b) — 입력에서 일부 바이트를 읽어 버퍼 배열 b에 저장해요.
  • void readFully(byte[] b, int off, int len)off부터 시작해 정확히 len 바이트를 읽어 b에 저장해요.
  • int readInt() — 입력 바이트 네 개를 읽어 int 값을 반환해요.
  • long readLong() — 입력 바이트 여덟 개를 읽어 long 값을 반환해요.
  • short readShort() — 입력 바이트 두 개를 읽어 short 값을 반환해요.
  • String readLine() — (더 이상 권장하지 않음) 한 줄의 텍스트를 읽어요. 바이트를 제대로 문자로 변환하지 못할 수 있어요.
  • int readUnsignedByte() — 입력 바이트 하나를 읽어 0~255 범위의 값으로 반환해요.
  • int readUnsignedShort() — 입력 바이트 두 개를 읽어 0~65535 범위의 값으로 반환해요.
  • String readUTF() — 수정된 UTF-8 형식으로 인코딩된 문자열을 읽어요.
  • int skipBytes(int n) — 입력에서 n 바이트를 건너뛰고 실제로 건너뛴 바이트 수를 반환해요.

DataInput은 기계 독립적인 방식으로 이진 데이터에서 기본형 값을 읽을 수 있게 해 줘요.

더 알아보기 (Learn more)