|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
public interface DataInput
DataInput
인터페이스는, 바이너리 스트림로부터 바이트를 읽어들여, 거기로부터 Java 의 원시형의 어느쪽이든으로 데이터를 재작성하기 위해서 제공되고 있습니다. 또,수정 UTF-8 형식의 데이터로부터 String
를 재작성하는 기능도 있습니다.
필요한 바이트수를 읽어들이기 전에 end-of-file 에 도달했을 경우,IOException
의 일종인 EOFException
가 throw 됩니다만, 이것은 이 인터페이스의 모든 read 루틴에 들어맞읍니다. end-of-file 이외의 하등의 이유에 의해 바이트를 읽어들일 수가 없는 경우,EOFException
이외의 IOException
가 throw 됩니다. 특히, 스트림이 닫혀졌을 경우는,IOException
가 throw 될 가능성이 있습니다.
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 형식과 이 형식이란, 다음의 점으로써 다릅니다.
'\u0000'
는 1 바이트는 아니고, 2 바이트 형식에 encode 됩니다. 이것에 의해, encode 된 캐릭터 라인이 그 중에 파묻힌 null 를 가질 것은 없습니다.
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 바이트를 스킵 하도록(듯이) 해, 스킵 한 바이트를 파기합니다. |
메소드의 상세 |
---|
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
- 입출력 에러가 발생했을 경우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)를 지정하는 intlen
- 읽어들이는 바이트수를 지정하는 int
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우int skipBytes(int n) throws IOException
n
바이트를 스킵 하도록(듯이) 해, 스킵 한 바이트를 파기합니다. 다만, 일부의 소수의 바이트 (0 바이트나 가능)를 스킵 할 수 있습니다. 이 스킵은 복수의 조건에 기인할 가능성이 있습니다만, 생각되는 유일한 경우는,n
바이트가 스킵 되기 전에 파일의 마지막에 이르렀을 경우입니다. 이 메소드는,EOFException
를 throw 할 것은 없습니다. 스킵 된 실제의 바이트수가 돌려주어집니다.
n
- 스킵 하는 바이트수
IOException
- 입출력 에러가 발생했을 경우boolean readBoolean() throws IOException
true
, 그 바이트가 제로의 경우는 false
를 돌려줍니다. 이 메소드는,DataOutput
인터페이스의 writeBoolean
메소드가 기입하는 바이트를 읽어들이는데 적합합니다.
boolean
의 값
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우byte readByte() throws IOException
-128
~ 127
의 범위 (상하한치를 포함한다)의 부호 첨0 보다 작은 값으로 해서 처리됩니다. 이 메소드는,DataOutput
인터페이스의 writeByte
메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우int readUnsignedByte() throws IOException
int
형에 제로 확장해 결과를 돌려줍니다. 결과는 이 때문에,0
~ 255
의 범위내가 됩니다. DataOutput
인터페이스의 writeByte
메소드의 인수가 이 범위내의 값이 되도록(듯이) 의도되고 있는 경우, 이 메소드는 writeByte
메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우short readShort() throws IOException
short
치를 돌려줍니다. a
를 1 번째의 바이트,b
를 2 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다.
(short)((a << 8) | (b & 0xff))
이 메소드는,DataOutput
인터페이스의 writeShort
메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우int readUnsignedShort() throws IOException
0
~ 65535
의 범위의 int
치를 돌려줍니다. a
를 1 번째의 바이트,b
를 2 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다.
(((a & 0xff) << 8) | (b & 0xff))
DataOutput
인터페이스의 writeShort
메소드의 인수가 0
~ 65535
의 범위의 값이 되도록(듯이) 의도되고 있는 경우, 이 메소드는 writeShort
메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우char readChar() throws IOException
char
치를 돌려줍니다. a
를 1 번째의 바이트,b
를 2 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다. (char)((a << 8) | (b & 0xff))
이 메소드는,DataOutput
인터페이스의 writeChar
메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.
char
의 값
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우int readInt() throws IOException
int
치를 돌려줍니다. a ~ d
를 읽히는 1 ~ 4 번째의 바이트로 하면(자), 반환값은 다음과 같이 됩니다.
(((a & 0xff) << 24) | ((b & 0xff) << 16) |
((c & 0xff) << 8) | (d & 0xff))
이 메소드는,DataOutput
인터페이스의 writeInt
메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.
int
의 값
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우long readLong() throws IOException
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
- 입출력 에러가 발생했을 경우float readFloat() throws IOException
float
치를 돌려줍니다. 이 때문에는, 우선 readInt
메소드와 완전히 같은 방법으로 int
치를 작성해, 다음에 이 int
치를 Float.intBitsToFloat
메소드와 완전히 같은 방법으로 float
로 변환합니다. 이 메소드는,DataOutput
인터페이스의 writeFloat
메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.
float
의 값
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우double readDouble() throws IOException
double
치를 돌려줍니다. 이 때문에는, 우선 readlong
메소드와 완전히 같은 방법으로 long
치를 작성해, 다음에 이 long
치를 Double.longBitsToDouble
메소드와 완전히 같은 방법으로 double
로 변환합니다. 이 메소드는,DataOutput
인터페이스의 writeDouble
메소드에 의해 기입해진 바이트를 읽어들이는데 적합합니다.
double
의 값
EOFException
- 모든 바이트를 읽어들이기 전에, 이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우String readLine() throws IOException
String
로서 돌려주어집니다. 이 메소드는 바이트를 처리하는 것이므로, Unicode 캐릭터 세트의 입력을 완전하게는 지원하지 않습니다.
파일의 마지막이 검출 될 때까지 1 바이트도 읽어들일 수 없었던 경우에는,null
가 돌려주어집니다. 그렇지 않은 경우, 읽힌 각 바이트는 제로 확장에 의해 char
형에 변환됩니다. 문자 '\n'
가 검출되면(자), 이 문자는 파기되어 read는 중지됩니다. 문자 '\r'
가 검출되면(자), 이 문자는 파기되어 그 다음의 바이트가 문자 '\n'
에 변환됩니다만, 이 문자도 파기되어, read가 중지됩니다. 문자 '\n'
와 문자 '\r'
의 어느 쪽인지 보다 전에 파일의 마지막이 검출되면(자), read가 중지됩니다. read가 중지되면(자), 읽혀 파기되어 있지 않은 모든 문자를 수중에 넣은 차례로 포함하고 있는 String
가 돌려주어집니다. 이 캐릭터 라인의 각각의 문자는 \u0100
, 즉 (char) 256
보다 작은 값을 가집니다.
null
IOException
- 입출력 에러가 발생했을 경우String readUTF() throws IOException
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
메소드를 사용하면(자), 이 메소드로 읽어들이는데 적합한 데이터를 기입할 수가 있습니다.
EOFException
- 모든 바이트를 읽어들이기 전에,
이 스트림의 마지막에 이르렀을 경우
IOException
- 입출력 에러가 발생했을 경우
UTFDataFormatException
- 캐릭터 라인중의 바이트가,
유효한 수정 UTF-8 형식에서 encode 된 캐릭터 라인 이외에서 만났을 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.