|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 모든 클래스 | ||||||||||
개요: 상자 | 필드 | constructor | 메소드 | 상세: 필드 | constructor | 메소드 |
java.lang.Object | +--java.nio.charset.CharsetEncoder
16 비트 Unicode 캐릭터의 순차 순서를 특정의 캐릭터 세트로 표현된 바이트 순차 순서로 변환하는 엔진입니다.
처음으로 사용할 때는 reset
메소드를 사용해 엔코더를 리셋트 합니다.
추가의 입력이 없어질 때까지 반복 encode
메소드를 호출합니다. endOfInput 인수에 false 를 건네주어, 입력 버퍼를 저장해, 다음의 호출전에 출력 버퍼를 플래시 합니다.
encode
멧소드의 호출을 종료할 때는 endOfInput 인수에 true 를 건네줍니다.
엔코더가 내부 상태를 출력 버퍼에 플래시 할 수 있게flush
메소드를 호출합니다.
encode
메소드를 호출할 때마다, 입력 버퍼내의 캐릭터가 encode 되어 출력 버퍼에 바이트가 기입해집니다. 새로운 입력 요구를 받아들이거나 출력 버퍼의 용량이 부족하거나 encode 에러가 발생하거나 하면(자),encode
메소드는 종료해, 종료의 원인을 나타내는 CoderResult
오브젝트를 돌려줍니다. 호출원래는 이 오브젝트를 확인해, 입력 버퍼를 저장하는지 출력 버퍼를 플래시 하는지 encode 에러로부터의 회복 처리를 실행해, 호출을 재시행합니다.
encode 에러에는 일반적인 2 종류의 에러가 있습니다. 입력 캐릭터 순차 순서가 정당한 16 비트 Unicode 순차 순서가 아닌 경우는 「부정 입력 에러」가 발생합니다. 입력 캐릭터 순차 순서는 정당해도, 이것을 유효한 바이트 순차 순서에 MAP 할 수 없는 경우는 「MAP 불가 캐릭터 에러」가 발생합니다.
encode 에러는 그 종류의 에러에 대해서 요구된 액션에 따라 처리됩니다. 이러한 액션은 CodingErrorAction
클래스의 인스턴스에 기술되고 있습니다. 예를 들어, 부정 입력의
,무시
CoderResult
오브젝트에 의한 호출 원래로의
, 부정 입력 내용을 대체 바이트 배열의 현재가에보고
이라고 하는 액션이 있습니다. 대체치는 최초, 엔코더의 디폴트의 값으로 설정되어 있습니다. 이 값은 많은 경우,{ (byte)'? ' } 라고 하는 초기치를 가지고 있습니다만,치환
replaceWith
메소드를 사용해 다른 값으로 변경할 수도 있습니다.
부정 입력 에러나 MAP 불가 캐릭터 에러가 발생했을 경우, 디폴트의 액션으로서 이러한 에러의
를 합니다. 부정 입력 에러에 대한 액션을 변경하고 싶은 경우는 보고
onMalformedInput
메소드, MAP 불가 캐릭터 에러에 대한 액션을 변경하고 싶은 경우는 onUnmappableCharacter
메소드를 사용합니다.
이 클래스는 에러 액션의 구현을 시작으로 하는 encode 처리의 다양한 부분을 처리하도록(듯이) 설계되고 있습니다. 특정의 캐릭터 세트용의 엔코더는 이 클래스의 구상 서브 클래스이므로, 표준 encode 루프를 캡슐화하는 추상 메소드,encodeLoop
를 구현하는 것만으로 끝납니다. 내부 상태를 보관 유지하는 서브 클래스는 이것에 가세해,flush
메소드와 reset
메소드를 오버라이드(override) 할 필요가 있습니다.
이 클래스의 인스턴스를 복수의 병행 thread로 안전하게 사용할 수 없습니다.
ByteBuffer
,
CharBuffer
,
Charset
,
CharsetDecoder
생성자의 개요 | |
protected |
CharsetEncoder (Charset cs,
float averageBytesPerChar,
float maxBytesPerChar)
새로운 엔코더를 초기화합니다. |
protected |
CharsetEncoder (Charset cs,
float averageBytesPerChar,
float maxBytesPerChar,
byte[] replacement)
새로운 엔코더를 초기화합니다. |
메소드의 개요 | |
float |
averageBytesPerChar ()
입력 캐릭터 마다 생성되는 평균 바이트수를 돌려줍니다. |
boolean |
canEncode (char c)
이 엔코더가 지정된 캐릭터를 encode 할 수 있을지 어떨지를 판단합니다. |
boolean |
canEncode (CharSequence cs)
이 엔코더가 지정된 캐릭터 순차 순서를 encode 할 수 있을지 어떨지를 판단합니다. |
Charset |
charset ()
이 엔코더를 생성한 캐릭터 세트를 돌려줍니다. |
ByteBuffer |
encode (CharBuffer in)
단일의 입력 char 버퍼의 컨텐츠를 새롭게 할당할 수 있었던 byte 버퍼내에 encode 하는 간이 메소드입니다. |
CoderResult |
encode (CharBuffer in,
ByteBuffer out,
boolean endOfInput)
지정된 입력 버퍼내의 캐릭터를 최대한 encode 해, 지정된 출력 버퍼에 결과를 기입합니다. |
protected abstract CoderResult |
encodeLoop (CharBuffer in,
ByteBuffer out)
1 개이상의 캐릭터 1 개 이상의 바이트에 encode 합니다. |
CoderResult |
flush (ByteBuffer out)
이 엔코더를 플래시 합니다. |
protected CoderResult |
implFlush (ByteBuffer out)
이 엔코더를 플래시 합니다. |
protected void |
implOnMalformedInput (CodingErrorAction newAction)
부정 입력 에러에 대한, 이 엔코더의 액션이 변경된 것을 보고합니다. |
protected void |
implOnUnmappableCharacter (CodingErrorAction newAction)
MAP 불가 캐릭터 에러에 대한, 이 엔코더의 액션이 변경된 것을 보고합니다. |
protected void |
implReplaceWith (byte[] newReplacement)
이 엔코더의 대체치가 변경된 것을 보고합니다. |
protected void |
implReset ()
이 엔코더를 리셋트 해, 캐릭터 세트 고유의 내부 상태를 클리어 합니다. |
boolean |
isLegalReplacement (byte[] repl)
지정된 바이트 배열이, 이 엔코더의 대체치로서 정당한가 어떤가를 판단합니다. |
CodingErrorAction |
malformedInputAction ()
부정 입력 에러에 대한, 이 엔코더의 현재의 액션을 돌려줍니다. |
float |
maxBytesPerChar ()
입력 캐릭터 마다 생성되는 최대 바이트수를 돌려줍니다. |
CharsetEncoder |
onMalformedInput (CodingErrorAction newAction)
부정 입력 에러에 대한, 이 엔코더의 액션을 변경합니다. |
CharsetEncoder |
onUnmappableCharacter (CodingErrorAction newAction)
MAP 불가 캐릭터 에러에 대한, 이 엔코더의 액션을 변경합니다. |
byte[] |
replacement ()
이 엔코더의 대체치를 돌려줍니다. |
CharsetEncoder |
replaceWith (byte[] newReplacement)
이 엔코더의 대체치를 변경합니다. |
CharsetEncoder |
reset ()
이 엔코더를 리셋트 해, 내부 상태를 클리어 합니다. |
CodingErrorAction |
unmappableCharacterAction ()
MAP 불가 캐릭터 에러에 대한, 이 엔코더의 현재의 액션을 돌려줍니다. |
클래스 java.lang. Object 에서 상속받은 메소드 |
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait |
생성자의 상세 |
protected CharsetEncoder(Charset cs, float averageBytesPerChar, float maxBytesPerChar, byte[] replacement)
averageBytesPerChar
- 입력 캐릭터 마다 생성되는 기대 바이트수를 나타내는 정의 float 치maxBytesPerChar
- 입력 캐릭터 마다 생성되는 바이트수의 최대치를 나타내는 정의 float 치replacement
- 대체치의 초기치 (null 이외, 제로가 아닌 길이 한편 maxBytesPerChar 이하의정당한
값)
IllegalArgumentException
- 상기의 파라미터의 전제 조건이 채워지지 않은 경우protected CharsetEncoder(Charset cs, float averageBytesPerChar, float maxBytesPerChar)
averageBytesPerChar
- 입력 캐릭터 마다 생성되는 바이트수의 기대치를 나타내는 정의 float 치maxBytesPerChar
- 입력 캐릭터 마다 생성되는 바이트수의 최대치를 나타내는 정의 float 치
IllegalArgumentException
- 상기의 파라미터의 전제 조건이 채워지지 않은 경우메소드의 상세 |
public final Charset charset()
public final byte[] replacement()
public final CharsetEncoder replaceWith(byte[] newReplacement)
이 메소드는 implReplaceWith
메소드를 호출해, 새로운 대체치가 조건에 맞고 있는 것을 확인한 데다가, 이 값을 건네줍니다.
newReplacement
- 새로운 대체치 (null 이외, 제로 이외의 길이 한편 maxBytesPerChar
메소드가 돌려주는 값이하의정당한
값)
IllegalArgumentException
- 상기의 파라미터의 전제 조건이 채워지지 않은 경우protected void implReplaceWith(byte[] newReplacement)
이 메소드의 디폴트 구현은 어떤 처리도 실시하지 않습니다. 이 메소드는 대체치의 변경 통지를 요구하는 엔코더에 의해 오버라이드(override) 됩니다.
newReplacement
- public boolean isLegalReplacement(byte[] repl)
대체치는 이 엔코더의 캐릭터 세트로 표현할 수 있는 정당한 바이트 순차 순서인 경우, 즉, 이 값을 1 개 이상의 16 비트 Unicode 캐릭터에 디코드할 수 있는 경우에 한해 정당합니다.
이 메소드의 디폴트 구현은 너무 효율이 좋지 않습니다. 통상, 이 성능을 개선하기 위해서는 오버라이드(override)가 필요합니다.
repl
- 테스트하는 바이트 배열
public CodingErrorAction malformedInputAction()
public final CharsetEncoder onMalformedInput(CodingErrorAction newAction)
이 메소드는 implOnMalformedInput
메소드를 호출해, 새로운 액션을 건네줍니다.
newAction
- 새로운 액션 (null 이외)
IllegalArgumentException
- 상기의 파라미터의 전제 조건이 채워지지 않은 경우protected void implOnMalformedInput(CodingErrorAction newAction)
이 메소드의 디폴트 구현은 어떤 처리도 실시하지 않습니다. 이 메소드는 부정 입력 에러에 대한 액션의 변경 통지를 요구하는 엔코더에 의해 오버라이드(override) 됩니다.
public CodingErrorAction unmappableCharacterAction()
public final CharsetEncoder onUnmappableCharacter(CodingErrorAction newAction)
이 메소드는 implOnUnmappableCharacter
메소드를 호출해, 새로운 액션을 건네줍니다.
newAction
- 새로운 액션 (null 이외)
IllegalArgumentException
- 상기의 파라미터의 전제 조건이 채워지지 않은 경우protected void implOnUnmappableCharacter(CodingErrorAction newAction)
이 메소드의 디폴트 구현은 어떤 처리도 실시하지 않습니다. 이 메소드는 MAP 불가 캐릭터 에러에 대한 액션의 변경 통지를 요구하는 엔코더에 의해 오버라이드(override) 됩니다.
public final float averageBytesPerChar()
public final float maxBytesPerChar()
public final CoderResult encode(CharBuffer in, ByteBuffer out, boolean endOfInput)
버퍼로부터의 읽어들여, 버퍼에의 기입은 현재 위치로부터 행해집니다. 읽어내지는 캐릭터수는 많아서 in.remaining()
캐릭터, 기입해지는 바이트수는 많아서 out.remaining()
바이트입니다. 버퍼의 위치는 읽어내진 캐릭터수 또는 기입해진 바이트수에 따라 증가합니다만, 마크와 리밋트는 그대로입니다.
이 메소드는 입력 버퍼내의 캐릭터의 read와 출력 버퍼에의 바이트의 기입에 가세해 종료의 원인을 설명하는 다음과 같은 CoderResult
오브젝트를 돌려줍니다.
CoderResult.UNDERFLOW
. 입력 버퍼내의 캐릭터가 최대한 encode 된 것을 나타낸다. 입력 버퍼내의 캐릭터가 모두 encode 되어 호출원으로부터의 새로운 입력도 없으면 encode 처리는 완료. 불완전한 입력이 있었기 때문에 더 이상 처리를 속행할 수 없는 경우는 보충 입력을 실시해, 이 메소드를 재차 호출한다
CoderResult.OVERFLOW
. 출력 버퍼가 가득 되어 있는 것을 나타낸다. 이 경우는 아직 빈 곳이 있는 출력 버퍼를 지정해, 재차 이 메소드를 호출한다
의 결과. 부정 입력 에러가 검출된 것을 나타낸다. 부정 캐릭터는 입력 버퍼의 (가산된) 위치로부터 시작된다. 부정 캐릭터수는 결과 오브젝트의 부정 입력
length
메소드를 호출하는 것으로 특정할 수 있다. 다만, 이것이 들어맞는 것은 이 엔코더의
이 부정 입력 에러에 대한 액션
CodingErrorAction.REPORT
인 경우에 한해진다. 그 이외의 경우, 부정 입력은 요구에 응해 무시되는지 다른 값으로 옮겨놓을 수 있다
의 결과. MAP 불가 캐릭터 에러가 검출된 것을 나타낸다. MAP 할 수 없는 캐릭터를 encode 하는 캐릭터는 입력 버퍼의 (가산된) 위치로부터 시작된다. 이러한 캐릭터수는 결과 오브젝트의 MAP 할 수 없는 캐릭터
length
메소드를 호출하는 것으로 특정할 수 있다. 다만, 이것이 들어맞는 것은 이 엔코더의
이 MAP 불가 캐릭터 에러에 대한 액션
CodingErrorAction.REPORT
인 경우에 한해진다. 그 이외의 경우, MAP 할 수 없는 캐릭터는 요구에 응해 무시되는지 다른 값으로 옮겨놓을 수 있다
endOfInput 파라미터는 지정된 입력 버퍼에 호출해 원으로부터의 새로운 입력이 있을지 어떨지를 이 메소드에 통지합니다. 아직 입력의 가능성이 있는 경우, 호출원래는 이 파라미터에 false 를 건네줄 필요가 있습니다. 더 이상 입력의 가능성이 없는 경우는 true 를 건네줍니다. 호출원으로부터 false 를 건네준 후에 입력이 없었다고 해도, 문제는 없습니다. 그러나, calling sequence에 있어서의 마지막 호출에서는 true 를 건네주지 않으면 안됩니다. 이 이후, 아직 encode되어 있지 않은 입력은 「부정」이라고 보여지게 됩니다.
이 메소드는 encodeLoop
메소드를 호출합니다. 그 후, 이 메소드의 결과를 해석해, 에러 조건의 처리를 끝마친 뒤, 필요에 따라서 재차 호출을 실시합니다.
in
- 입력 char 버퍼out
- 출력 byte 버퍼endOfInput
- 호출원이 지정된 버퍼에 더 이상의 입력 캐릭터를 추가할 가능성이 없는 경우에 한해 true
IllegalStateException
- encode 처리가 벌써 진행중이며, 그 직전의 처리가 reset
메소드의 호출에서도,endOfInput 파라미터에 false 를 지정한 이 메소드의 호출에서도,endOfInput 파라미터에 true 를 지정한 이 메소드의 호출도 아닌데, encode 처리가 불완전한 것을 나타내는 반환값이 돌려주어졌을 경우
CoderMalfunctionError
- encodeLoop 메소드의 호출에 의해 예상외의 예외가 슬로우 되었을 경우public final CoderResult flush(ByteBuffer out)
내부 상태를 보관 유지하는 일부의 엔코더는 입력 순차 순서의 read가 완료한 시점에서, 출력 버퍼에 종단 바이트를 기입할 필요가 있습니다.
추가의 출력은 출력 버퍼의 현재 위치에 기입해집니다. 기입해지는 바이트수는 많아서 out.remaining()
바이트입니다. 버퍼의 위치는 이 바이트수에 따라 가산합니다만, 마크와 리밋트는 그대로입니다.
이 메소드는 정상적으로 종료했을 경우 CoderResult.UNDERFLOW
를 돌려줍니다. 출력 버퍼의 용량이 부족한 경우는 CoderResult.OVERFLOW
를 돌려줍니다. CoderResult.OVERFLOW
가 돌려주어졌을 경우는 용량에 빈 곳이 있는 출력 버퍼를 지정해 이 메소드를 재차 호출해, 이encode 처리를 완료시킬 필요가 있습니다.
이 메소드는 implFlush
메소드를 호출해, 실제로 플래시를 실시합니다.
out
- 출력 byte 버퍼
CoderResult.UNDERFLOW
또는 CoderResult.OVERFLOW
)
IllegalStateException
- 현재의 encode 처리의 직전의 처리가 reset
메소드의 호출에서도,endOfInput 파라미터에 true 를 지정한 3 개의 인수를 가지는 encode
메소드의 호출도 아닌 경우protected CoderResult implFlush(ByteBuffer out)
이 메소드의 디폴트 구현은 어떤 처리도 실시하지 않고 항상 CoderResult.UNDERFLOW
를 돌려줍니다. 이 메소드는 입력 순차 순서의 read가 완료한 시점에서 출력 버퍼에 종단 바이트를 기입할 필요가 있는 엔코더에 의해 오버라이드(override) 됩니다.
out
- 출력 byte 버퍼
CoderResult.UNDERFLOW
또는 CoderResult.OVERFLOW
)public final CharsetEncoder reset()
이 메소드는 캐릭터 세트 고유 상태를 리셋트 합니다. 또, 캐릭터 세트 고유의 리셋트 액션을 실행하기 위해서 implReset
메소드를 호출합니다.
protected void implReset()
이 메소드의 디폴트 구현은 어떤 처리도 실시하지 않습니다. 이 메소드는 내부 상태를 보관 유지하는 엔코더에 의해 오버라이드(override) 됩니다.
protected abstract CoderResult encodeLoop(CharBuffer in, ByteBuffer out)
이 메소드는 표준 encode 루프를 캡슐화해, 최대한의 캐릭터를 encode 합니다. encode는 입력이 없어지는지 출력 버퍼의 용량이 부족하는지 encode 에러가 발생하면(자) 종료합니다. 이 메소드는 결과 해석과 에러 복구 처리를 실시하는 encode
메소드에 의해 불려 갑니다.
버퍼로부터의 읽어들여, 버퍼에의 기입은 현재 위치로부터 행해집니다. 읽어내지는 캐릭터수는 많아서 in.remaining()
캐릭터, 기입해지는 바이트수는 많아서 out.remaining()
바이트입니다. 버퍼의 위치는 읽어내진 캐릭터수 또는 기입해진 바이트수에 따라 증가합니다만, 마크와 리밋트는 그대로입니다.
이 메소드는 encode
메소드와 같게, 종료의 원인을 설명하는 CoderResult
오브젝트를 돌려줍니다. 이 메소드의 구현의 상당수는 encode
메소드에 의해 해석되는 적절한 결과 오브젝트를 돌려주는 것으로, encode 에러를 처리합니다. 이것에 대해서, 최적화된 구현은 관련 에러 액션을 조사해, 그 액션 자체를 구현합니다.
이 메소드의 구현은 필요한 입력을 받을 때까지 임의의 전방 검색을 실시합니다. 검색중은 CoderResult.UNDERFLOW
를 돌려줍니다.
in
- 입력 char 버퍼out
- 출력 byte 버퍼
public final ByteBuffer encode(CharBuffer in) throws CharacterCodingException
이 메소드에서는 모든encode 처리가 실행됩니다. 즉, 이 메소드를 실행하면(자), 엔코더가 리셋트 되어 지정된 char 버퍼내의 캐릭터가 encode 되어 마지막에 엔코더가 플래시 됩니다. encode 처리가 현재 진행중의 경우는 이 메소드를 호출하지 말아 주세요.
in
- 입력 char 버퍼
IllegalStateException
- encode 처리가 벌써 진행중인 경우
MalformedInputException
- 입력 버퍼의 현재 위치로부터의 캐릭터 순차 순서가, 정당한 16 비트 Unicode 순차 순서가 아니고, 부정 입력 에러에 대한 액션이 CodingErrorAction.REPORT
인 경우
UnmappableCharacterException
- 입력 버퍼의 현재 위치로부터의 캐릭터 순차 순서를 동등의 바이트 순차 순서에 MAP 하지 못하고, MAP 불가 캐릭터 에러에 대한 액션이 CodingErrorAction.REPORT
인 경우
CharacterCodingException
public boolean canEncode(char c)
지정된 캐릭터가 사로 게이트 캐릭터인 경우, 이 메소드는 false 를 돌려줍니다. 사로 게이트 캐릭터는 상위 사로 게이트와 하위 사로 게이트의 편성이 모이지 않으면 해석할 수 없습니다. 캐릭터 순차 순서의 encode가 가능한지 어떤지는 canEncode(CharSequence)
메소드를 사용해 테스트할 수 있습니다.
이 메소드는 이 엔코더 상태를 변경합니다. 벌써encode 처리가 진행되고 있는 경우는 이 메소드를 호출하지 말아 주세요.
이 메소드의 디폴트 구현은 너무 효율이 좋지 않습니다. 통상, 이 성능을 개선하기 위해서는 오버라이드(override)가 필요합니다.
IllegalStateException
- encode 처리가 벌써 진행중인 경우public boolean canEncode(CharSequence cs)
이 메소드가 특정의 캐릭터 순차 순서에 대해서 false 를 돌려주는 경우는 encode 처리를 모두 실행하면, 순차 순서가 encode 되지 않는 이유를 자세하게 조사할 수가 있습니다.
이 메소드는 이 엔코더 상태를 변경합니다. 벌써 encode 처리가 진행되고 있는 경우는 이 메소드를 호출하지 말아 주세요.
이 메소드의 디폴트 구현은 너무 효율이 좋지 않습니다. 통상, 이 성능을 개선하기 위해서는 오버라이드(override)가 필요합니다.
IllegalStateException
- encode 처리가 벌써 진행중인 경우
|
JavaTM 2 Platform Std. Ed. v1. 4.0 |
||||||||||
전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 모든 클래스 | ||||||||||
개요: 상자 | 필드 | constructor | 메소드 | 상세: 필드 | constructor | 메소드 |
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.