DataInput — 바이너리 스트림에서 기본형 데이터 읽기
DataInput — 바이너리 스트림에서 기본형 데이터 읽기
DataInput 인터페이스는 바이너리 스트림에서 바이트를 읽고 이를 Java 기본 타입 데이터로 재구성하는 기능을 제공해요. 또한 수정된 UTF-8 형식의 데이터로부터 String을 재구성하는 기능도 있어요. 이 인터페이스의 모든 읽기 루틴에서, 원하는 바이트 수만큼 읽기 전에 파일 끝에 도달하면 EOFException(일종의 IOException)이 던져집니다. 파일 끝이 아닌 다른 이유로 바이트를 읽을 수 없다면 EOFException이 아닌 IOException이 던져져요. 특히 입력 스트림이 닫혀 있으면 IOException이 던져질 수 있어요.
본문
DataInput과 DataOutput 인터페이스의 구현은 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은 기계 독립적인 방식으로 이진 데이터에서 기본형 값을 읽을 수 있게 해 줘요.