JavaTM 2
Platform
Std.  Ed.  v1. 4.0

java.io
인터페이스 DataInput

기존의 서브 인터페이스의 일람:
ImageInputStream , ImageOutputStream , ObjectInput
기존의 구현 클래스의 일람:
DataInputStream , ImageInputStreamImpl , ImageOutputStreamImpl , ObjectInputStream , RandomAccessFile

public interface DataInput

바이너리 스트림으로부터 바이트를 읽어들여, 거기로부터 Java 의 원시적형의 어떤 것인가로 데이터를 재작성하기 위해서 제공되고 있습니다. 또, Java 의 수정 UTF-8 형식의 데이터로부터 String 를 재작성하는 기능도 있습니다.

이 인터페이스의 모든 read routine에서는 필요한 바이트수가 읽히기 전에 파일의 마지막에 이르렀을 경우는 통상,EOFException (IOException 의 일종)가 슬로우 됩니다. 파일의 마지막에 이르렀다고 하는 이외의 이유로써 바이트의 읽어들여에 실패했을 경우는 EOFException 이외의 IOException 가 슬로우 됩니다. 특히, 입력 스트림이 닫혀지고 있으면(자),IOException 가 슬로우 됩니다.

도입된 버젼:
JDK1. 0
관련 항목:
DataInputStream , DataOutput

메소드의 개요
 boolean readBoolean ()
          1 바이트의 입력 데이터를 읽어들여, 그 바이트가 제로 이외의 경우는 true, 그 바이트가 제로의 경우는 false 를 돌려줍니다.
 byte readByte ()
          1 바이트의 입력 데이터를 읽어들여 돌려줍니다.
 char readChar ()
          입력 데이터의 char 를 읽어들여,char 치를 돌려줍니다.
 double readDouble ()
          8 바이트의 입력 데이터를 읽어들여,double 치를 돌려줍니다.
 float readFloat ()
          4 바이트의 입력 데이터를 읽어들여,float 치를 돌려줍니다.
 void readFully (byte[] b)
          입력 스트림으로부터 몇개의 바이트를 읽어들여, 버퍼 배열 b 에 저장합니다.
 void readFully (byte[] b, int off, int len)
          입력 스트림으로부터 len 바이트를 읽어들입니다.
 int readInt ()
          4 바이트의 입력 데이터를 읽어들여,int 치를 돌려줍니다.
 String readLine ()
          입력 스트림으로부터 , 다음의 행의 텍스트를 읽어들입니다.
 long readLong ()
          8 바이트의 입력 데이터를 읽어들여,long 치를 돌려줍니다.
 short readShort ()
          2 바이트의 입력 데이터를 읽어들여,short 치를 돌려줍니다.
 int readUnsignedByte ()
          1 바이트의 입력 데이터를 읽어들여,int 형에 제로 확장해 결과를 돌려줍니다.
 int readUnsignedShort ()
          2 바이트의 입력 데이터를 읽어들여,0 ~ 65535 의 범위의 int 치를 돌려줍니다.
 String readUTF ()
          수정 UTF-8 형식에서 코드화 된 캐릭터 라인을 읽어들입니다.
 int skipBytes (int n)
          입력 스트림으로부터 n 바이트를 스킵 하도록(듯이) 해, 스킵 한 바이트를 파기합니다.
 

메소드의 상세

readFully

public void readFully(byte[] b)
               throws IOException 
입력 스트림으로부터 몇개의 바이트를 읽어들여, 버퍼 배열 b 에 저장합니다. 읽히는 바이트수는 b 의 길이에 일치합니다.

이 메소드는 이하의 조건의 1 개가 발생할 때까지 블록 합니다.

bnull 의 경우,NullPointerException 가 슬로우 됩니다. b.length 가 제로의 경우, 읽히는 데이터는 없습니다. 그렇지 않은 경우, 읽히는 최초의 바이트는 요소 b[0] 에, 다음의 바이트는 요소 b[1] 에 차례차례 저장되어 갑니다. 이 메소드로부터 예외가 슬로우 되면(자),b 의 모두는 아닌으로 해도 일부의 바이트가 입력 스트림의 데이터로 갱신되고 있습니다.

파라미터:
b - 데이터의 read처의 버퍼
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readFully

public void readFully(byte[] b,
                      int off,
                      int len)
               throws IOException 
입력 스트림으로부터 len 바이트를 읽어들입니다.

이 메소드는 이하의 조건의 1 개가 발생할 때까지 블록 합니다.

bnull 의 경우,NullPointerException 가 슬로우 됩니다. off 가 부의 값의 경우,len 가 부의 값의 경우, 혹은 off+len 가 배열 b 의 길이보다 큰 경우,IndexOutOfBoundsException 가 슬로우 됩니다. len 가 제로의 경우, 읽히는 바이트는 없습니다. 그렇지 않은 경우, 읽히는 최초의 바이트는 요소 b[off] 에, 다음의 바이트는 요소 b[off+1] 에 차례차례 저장되어 갑니다. 읽히는 바이트수는 최대에서도 len 까지입니다.

파라미터:
b - 데이터의 read처의 버퍼
off - 데이터에의 오프셋(offset)를 지정하는 int
len - 읽어들이는 바이트수를 지정하는 int
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

skipBytes

public int skipBytes(int n)
              throws IOException 
입력 스트림으로부터 n 바이트를 스킵 하도록(듯이) 해, 스킵 한 바이트를 파기합니다. 다만,n 보다 적은 바이트수 (제로의 경우도 있다) 밖에 스킵 하지 않는 경우도 있습니다. 이것은 몇개의 조건 가운데 1 개에 해당했을 경우에 발생합니다. n 바이트를 스킵 하기 전에 파일의 마지막에 이르러 버렸을 경우도 그 1 kr입니다. 이 메소드가 EOFException 를 슬로우 할 것은 없습니다. 스킵 된 실제의 바이트수가 돌려주어집니다.

파라미터:
n - 스킵 하는 바이트수
반환값:
실제로 스킵 한 바이트수
예외:
IOException - 입출력 에러가 발생했을 경우

readBoolean

public boolean readBoolean()
                    throws IOException 
1 바이트의 입력 데이터를 읽어들여, 그 바이트가 제로 이외의 경우는 true, 그 바이트가 제로의 경우는 false 를 돌려줍니다. 이 메소드는 DataOutput 인터페이스의 writeBoolean 메소드가 기입하는 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 boolean 의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readByte

public byte readByte()
              throws IOException 
1 바이트의 입력 데이터를 읽어들여 돌려줍니다. read 대상 바이트는 -128 ~ 127 의 범위 (상하한치를 포함한다)의 부호 첨부의 값으로 해서 처리됩니다. 이 메소드는 DataOutput 인터페이스의 writeByte 메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 8 비트의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readUnsignedByte

public int readUnsignedByte()
                     throws IOException 
1 바이트의 입력 데이터를 읽어들여,int 형에 제로 확장해 결과를 돌려줍니다. 결과는 이 때문에,0 ~ 255 의 범위내가 됩니다. DataOutput 인터페이스의 writeByte 메소드의 인수가 이 범위내의 값이 되도록(듯이) 의도되고 있는 경우, 이 메소드는 writeByte 메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 부호 없음 8 비트의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readShort

public short readShort()
                throws IOException 
2 바이트의 입력 데이터를 읽어들여,short 치를 돌려줍니다. a 를 1 번째의 바이트,b 를 2 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다.

(short)((a << 8) * | (b & 0xff))
 
이 메소드는 DataOutput 인터페이스의 writeShort 메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 16 비트의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readUnsignedShort

public int readUnsignedShort()
                      throws IOException 
2 바이트의 입력 데이터를 읽어들여,0 ~ 65535 의 범위의 int 치를 돌려줍니다. a 를 1 번째의 바이트,b 를 2 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다.

(((a & 0xff) << 8) | (b & 0xff))
 
DataOutput 인터페이스의 writeShort 메소드의 인수가 0 ~ 65535 의 범위의 값이 되도록(듯이) 의도되고 있는 경우, 이 메소드는 writeShort 메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 부호 없음 16 비트의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readChar

public char readChar()
              throws IOException 
입력 데이터의 char 를 읽어들여,char 치를 돌려줍니다. Unicode char 는 2 바이트로부터 구성됩니다. a 를 1 번째의 바이트,b 를 2 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다.

(char)((a << 8) | (b & 0xff))
 
이 메소드는 DataOutput 인터페이스의 writeChar 메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 Unicode char 의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readInt

public int readInt()
            throws IOException 
4 바이트의 입력 데이터를 읽어들여,int 치를 돌려줍니다. a 를 1 번째 ,b 를 2 번째 ,c 를 3 번째 ,d 를 4 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다.

 
 (((a & 0xff) << 24) | ((b & 0xff) << 16) |
  ((c & 0xff) << 8) | (d & 0xff))
 
이 메소드는 DataOutput 인터페이스의 writeInt 메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 int 의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readLong

public long readLong()
              throws IOException 
8 바이트의 입력 데이터를 읽어들여,long 치를 돌려줍니다. a 를 1 번째 ,b 를 2 번째 ,c 를 3 번째 ,d 를 4 번째 ,e 를 5 번째 ,f 를 6 번째 ,g 를 7 번째 ,h 를 8 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다.

 
 (((long)(a & 0xff) << 56) |
  ((long)(b & 0xff) << 48) |
  ((long)(c & 0xff) << 40) |
  ((long)(d & 0xff) << 32) |
  ((long)(e & 0xff) << 24) |
  ((long)(f & 0xff) << 16) |
  ((long)(g & 0xff) <<  8) |
  ((long)(h & 0xff)))
 

이 메소드는 DataOutput 인터페이스의 writeLong 메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 long 의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readFloat

public float readFloat()
                throws IOException 
4 바이트의 입력 데이터를 읽어들여,float 치를 돌려줍니다. 이 때문에는 우선 readInt 메소드와 완전히 같은 방법으로 int 치를 작성해, 다음에 이 int 치를 Float.intBitsToFloat 메소드와 완전히 같은 방법으로 float 로 변환합니다. 이 메소드는 DataOutput 인터페이스의 writeFloat 메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 float 의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readDouble

public double readDouble()
                  throws IOException 
8 바이트의 입력 데이터를 읽어들여,double 치를 돌려줍니다. 이 때문에는 우선 readlong 메소드와 완전히 같은 방법으로 long 치를 작성해, 다음에 이 long 치를 Double.longBitsToDouble 메소드와 완전히 같은 방법으로 double 로 변환합니다. 이 메소드는 DataOutput 인터페이스의 writeDouble 메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.

반환값:
읽힌 double 의 값
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우

readLine

public String  readLine()
                throws IOException 
입력 스트림으로부터 , 다음의 행의 텍스트를 읽어들입니다. 이 메소드는 줄 끝 기호 또는 파일의 마지막을 검출할 때까지 연속하는 바이트를 읽어들여, 각 바이트를 각각 캐릭터로 변환합니다. 읽힌 캐릭터는 다음에,String 로서 돌려주어집니다. 이 메소드는 바이트를 처리하는 것이므로, Unicode 캐릭터 세트의 입력을 완전하게는 서포트하지 않습니다.

파일의 마지막이 검출 될 때까지 1 바이트도 읽어들일 수 없었던 경우에는 null 가 돌려주어집니다. 그렇지 않은 경우, 읽힌 각 바이트는 제로 확장에 의해 char 형에 변환됩니다. 캐릭터 '\n' 가 검출되면(자), 이 캐릭터는 파기되어 read는 중지됩니다. 캐릭터 '\r' 가 검출되면(자), 이 캐릭터는 파기되어 그 다음의 바이트가 캐릭터 '\n' 에 변환됩니다만, 이 캐릭터도 파기되어, read가 중지됩니다. 캐릭터 '\n' 와 캐릭터 '\r' 의 어느 쪽인지 보다 전에 파일의 마지막이 검출되면(자), read가 중지됩니다. read가 중지되면(자), 읽혀 파기되어 있지 않은 모든 캐릭터를 수중에 넣은 차례로 저장하고 있는 String 가 돌려주어집니다. 이 캐릭터 라인의 각각의 캐릭터는 \u0100, 즉 (char) 256 보다 작은 값을 가집니다.

반환값:
이 입력 스트림으로부터 의 다음의 텍스트행. 파일의 마지막이 검출 될 때까지 1 바이트도 읽어들일 수 없었던 경우는 null
예외:
IOException - 입출력 에러가 발생했을 경우

readUTF

public String  readUTF()
               throws IOException 
수정 UTF-8 형식에서 코드화 된 캐릭터 라인을 읽어들입니다. readUTF 의 범용 규약에서는 Java 의 수정 UTF-8 형식에서 코드화 된 Unicode 캐릭터 라인의 표현을 읽어들입니다. 읽힌 캐릭터 라인은 String 로서 돌려주어집니다.

우선, 2 바이트를 읽어들여, 그것을 사용해 readUnsignedShort 메소드와 완전히 같은 방법으로 부호 없음 16 비트 정수를 작성합니다. 이 정수치는 「UTF 장」이라고 불려 읽히는 추가의 바이트수를 나타냅니다. 다음에, 이 바이트가 그룹 단위로 캐릭터에 변환됩니다. 각 그룹의 길이는 그룹의 선두 바이트의 값으로부터 계산됩니다. 그룹에 후속의 바이트가 있으면, 그것은 다음의 그룹의 선두 바이트입니다.

그룹의 선두 바이트가 비트 패턴의 0xxxxxxx (다만,x0 또는 1 을 의미한다)에 일치하는 경우, 그룹은 그 바이트만으로 구성됩니다. 바이트는 제로 확장되어 단일의 캐릭터를 표현합니다.

그룹의 선두 바이트가 비트 패턴 110xxxxx 에 일치하는 경우, 그 그룹은 그 바이트 a 와 2 번째의 바이트 b 로부터 구성됩니다. 바이트 b 가 존재하지 않는 경우 (바이트 a 가 읽힌 일련의 바이트의 마지막 것이었던 경우)나, 바이트 b 가 비트 패턴 10xxxxxx 에 일치하지 않는 경우에는 UTFDataFormatException 가 슬로우 됩니다. 그렇지 않은 경우, 그룹은 다음의 캐릭터에 변환됩니다.

(char)(((a& 0x1F) << 6) | (b & 0x3F))
 
그룹의 선두 바이트가 비트 패턴 1110xxxx 에 일치하는 경우, 그 그룹은 선두 바이트 a 에 가세해, 2 살의 바이트 bc 로부터 구성됩니다. 바이트 c 가 존재하지 않는 경우 (바이트 a 가 읽힌 일련의 바이트의 마지막 2 kr에 들어가 있었을 경우)나, 바이트 b 또는 c 가 비트 패턴 10xxxxxx 에 일치하지 않는 경우에는 UTFDataFormatException 가 슬로우 됩니다. 그렇지 않은 경우, 그룹은 다음의 캐릭터에 변환됩니다.


 (char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
 
그룹의 선두 바이트가 패턴 1111xxxx 나 패턴 10xxxxxx 에 일치하는 경우,UTFDataFormatException 가 슬로우 됩니다.

이 처리 전체의 어디선가 파일의 마지막이 검출되면(자),EOFException 가 슬로우 됩니다.

각 그룹이 이 처리로 1 캐릭터에 변환되면(자), 대응하는 그룹이 입력 스트림으로부터 읽힌 것과 같은 순서로 각 캐릭터가 수집되어String 를 표현합니다. 그리고, 이 String 가 돌려주어집니다.

DataOutput 인터페이스의 writeUTF 메소드를 사용하면(자), 이 메소드로 읽어들이는데 적합한 데이터를 기입할 수가 있습니다.

반환값:
Unicode 캐릭터 라인
예외:
EOFException - 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException - 입출력 에러가 발생했을 경우
UTFDataFormatException - 캐릭터 라인중의 바이트가, 유효한 UTF-8 형식에서 코드화 된 캐릭터 라인 이외에서 만났을 경우

JavaTM 2
Platform
Std.  Ed.  v1. 4.0

버그의 보고와 기능의 리퀘스트
이외의 API 레퍼런스 및 개발자용 문서에 대해서는 Java 2 SDK SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Java, Java 2 D, 및 JDBC 는 미국 및 그 외의 나라에 있어서의 미국 Sun Microsystems, Inc. 의 상표 혹은 등록상표입니다.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.