DataInput (Java Platform SE 6) - xrath.com 에서 번역됨

개요 | 패키지 | 클래스 | 사용 | 계층 트리 | 비추천 API | 색인 | 헬프

JavaTM Platform
Standard Ed. 6

앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드

## java.io
인터페이스 DataInput

기존의 서브 인터페이스의 일람:
  ImageInputStream , ImageOutputStream , ObjectInput

기존의 구현 클래스의 일람:
  DataInputStream , FileCacheImageInputStream , FileCacheImageOutputStream , FileImageInputStream , FileImageOutputStream , ImageInputStreamImpl , ImageOutputStreamImpl , MemoryCacheImageInputStream , MemoryCacheImageOutputStream , ObjectInputStream , RandomAccessFile

    public interface DataInput

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

필요한 바이트수를 읽어들이기 전에 end-of-file 에 도달했을 경우,`IOException` 의 일종인 `EOFException` 가 throw 됩니다만, 이것은 이 인터페이스의 모든 read 루틴에 들어맞읍니다. end-of-file 이외의 하등의 이유에 의해 바이트를 읽어들일 수가 없는 경우,`EOFException` 이외의 `IOException` 가 throw 됩니다. 특히, 스트림이 닫혀졌을 경우는,`IOException` 가 throw 될 가능성이 있습니다.

#### 수정 UTF-8

DataInput 인터페이스와 DataOutput 인터페이스의 구현은, UTF-8 를 약간 수정한 형식의 Unicode 로 캐릭터 라인을 표현합니다 (표준의 UTF-8 형식의 자세한 것은, 「The Unicode Standard, Version 4.0」의 「3.9 Unicode Encoding Forms」를 참조). 다음의 겉(표)에서는, 좌단의 열이 최상정도 비트입니다.

`'\u0001'` ~ `'\u007F'` 까지의 범위의 문자는 모두 1 개의 바이트로 표현됩니다.

> | 비트치

> 바이트 1

> 0 | 비트 6-0

null 문자 `'\u0000'` 와 `'\u0080'` ~ `'\u07FF'` 의 범위의 문자는 2 개의 바이트로 표현됩니다.

> | 비트치

> 바이트 1

> 1 | 1 | 0 | 비트 10-6

> 바이트 2

> 1 | 0 | 비트 5-0

`'\u0800'` ~ `'\uFFFF'` 의 범위의 `char` 치는 3 개의 바이트로 표현됩니다.

> | 비트치

> 바이트 1

> 1 | 1 | 1 | 0 | 비트 15-12

> 바이트 2

> 1 | 0 | 비트 11-6

> 바이트 3

> 1 | 0 | 비트 5-0

표준 UTF-8 형식과 이 형식이란, 다음의 점으로써 다릅니다.

- null 바이트 `'\u0000'` 는 1 바이트는 아니고, 2 바이트 형식에 encode 됩니다. 이것에 의해, encode 된 캐릭터 라인이 그 중에 파묻힌 null 를 가질 것은 없습니다.
- 1 바이트, 2 바이트, 및 3 바이트 형식만을 사용합니다.
- 보조 문자는, surrogate 페어의 형식에서 나타내집니다.

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

메소드의 개요
`boolean` | `readBoolean ()` 1 바이트의 입력 데이터를 읽어들여, 그 바이트가 제로 이외의 경우는 `true`, 그 바이트가 제로의 경우는 `false` 를 돌려줍니다.
`byte` | `readByte ()` 1 바이트의 입력 데이터를 읽어들여 돌려줍니다.
`char` | `readChar ()` 2 바이트의 입력 데이터를 읽어들여,`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 형식에서 encode 된 캐릭터 라인을 읽어들입니다.
`int` | `skipBytes (int n)` 입력 스트림로부터 `n` 바이트를 스킵 하도록(듯이) 해, 스킵 한 바이트를 파기합니다.

메소드의 상세

### readFully

    void readFully(byte[] b)
                   throws IOException

  입력 스트림로부터 몇개의 바이트를 읽어들여, 버퍼 배열 `b` 에 포함합니다. 읽히는 바이트수는 `b` 의 길이에 일치합니다.

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

  - `b.length` 바이트의 입력 데이터가 읽어들여 가능. 이 경우, 일반적으로의 값이 반환된다
  - 파일의 마지막이 검출되었다. 이 경우는,`EOFException` 가 throw 된다
  - 입출력 에러가 발생했다. 이 경우는,`EOFException` 는 아니고 `IOException` 가 throw 된다

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

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

### readFully

    void readFully(byte[] b,
                   int off,
                   int len)
                   throws IOException

  입력 스트림로부터 `len` 바이트를 읽어들입니다.

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

  - `len` 바이트의 입력 데이터가 읽어들여 가능. 이 경우, 일반적으로의 값이 반환된다
  - 파일의 마지막이 검출되었다. 이 경우는,`EOFException` 가 throw 된다
  - 입출력 에러가 발생했다. 이 경우는,`EOFException` 는 아니고 `IOException` 가 throw 된다

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

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

### skipBytes

    int skipBytes(int n)
                  throws IOException

  입력 스트림로부터 `n` 바이트를 스킵 하도록(듯이) 해, 스킵 한 바이트를 파기합니다. 다만, 일부의 소수의 바이트 (0 바이트나 가능)를 스킵 할 수 있습니다. 이 스킵은 복수의 조건에 기인할 가능성이 있습니다만, 생각되는 유일한 경우는,`n` 바이트가 스킵 되기 전에 파일의 마지막에 이르렀을 경우입니다. 이 메소드는,`EOFException` 를 throw 할 것은 없습니다. 스킵 된 실제의 바이트수가 돌려주어집니다.

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

### readBoolean

    boolean readBoolean()
                        throws IOException

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

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

### readByte

    byte readByte()
                  throws IOException

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

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

### readUnsignedByte

    int readUnsignedByte()
                         throws IOException

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

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

### readShort

    short readShort()
                    throws IOException

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

      (short)((a << 8) | (b & 0xff))

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

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

### readUnsignedShort

    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

    char readChar()
                  throws IOException

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

      (char)((a << 8) | (b & 0xff))

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

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

### readInt

    int readInt()
                throws IOException

  4 바이트의 입력 데이터를 읽어들여,`int` 치를 돌려줍니다. `a ~ d` 를 읽히는 1 ~ 4 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다.

       (((a & 0xff) << 24) | ((b & 0xff) << 16) |
        ((c & 0xff) << 8) | (d & 0xff))

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

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

### readLong

    long readLong()
                  throws IOException

  8 바이트의 입력 데이터를 읽어들여,`long` 치를 돌려줍니다. `a ~ h` 를 읽히는 1 ~ 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

    float readFloat()
                    throws IOException

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

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

### readDouble

    double readDouble()
                      throws IOException

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

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

### readLine

    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

    String  readUTF()
                   throws IOException

  수정 UTF-8 형식에서 encode 된 캐릭터 라인을 읽어들입니다. `readUTF` 의 범용 규약에서는, 수정 UTF-8 형식에서 encode 된 Unicode 캐릭터 라인의 표현을 읽어들입니다. 읽힌 캐릭터 라인은,`String` 로서 돌려주어집니다.

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

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

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

      (char)(((a& 0x1F) << 6) | (b & 0x3F))

  그룹의 선두 바이트가 비트 패턴 `1110xxxx` 에 일치하는 경우, 그 그룹은 선두 바이트 `a` 에 가세해, 2 살의 바이트 `b` 와 `c` 로부터 구성됩니다. 바이트 `c` 가 존재하지 않는 경우 (바이트 `a` 가 읽힌 일련의 바이트의 마지막 2 개(살)에 들어가 있었을 경우)나, 바이트 `b` 또는 `c` 가 비트 패턴 `10xxxxxx` 에 일치하지 않는 경우에는,`UTFDataFormatException` 가 throw 됩니다. 그렇지 않은 경우, 그룹은 다음의 문자에 변환됩니다.

      (char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))

  그룹의 선두 바이트가 패턴 `1111xxxx` 나 패턴 `10xxxxxx` 에 일치하는 경우,`UTFDataFormatException` 가 throw 됩니다.

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

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

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

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

개요 | 패키지 | 클래스 | 사용 | 계층 트리 | 비추천 API | 색인 | 헬프

JavaTM Platform
Standard Ed. 6

앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드

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

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.