モジュール java.base
パッケージ java.nio.charset

クラスCharsetDecoder

java.lang.Object
java.nio.charset.CharsetDecoder

public abstract class CharsetDecoder extends Object
特定の文字セットで表現されたバイト・シーケンスを16ビットUnicode文字のシーケンスに変換するエンジンです。

入力バイト・シーケンスは、単一のbyteバッファまたは一連のbyteバッファとして提供されます。 出力文字シーケンスは、単一の文字バッファまたは一連の文字バッファに書き込まれます。 デコーダを使用する際には、必ず次のメソッド呼出し手順(以下、デコード処理)に従ってください。

  1. デコーダをはじめて使用する場合以外は、resetメソッドを使用してデコーダをリセットします。

  2. decodeメソッドを0回以上起動します(追加入力が使用可能であれば、endOfInput引数にfalseを渡し、入力バッファを埋めて、呼出し間で出力バッファをフラッシュします)

  3. decodeメソッドを最後に1回起動し、endOfInput引数のtrueを渡します

  4. デコーダが内部状態を出力バッファへフラッシュできるように、flushメソッドを呼び出します。

decodeメソッドを呼び出すたびに、入力バッファ内のバイトが文字にデコードされ、出力バッファに書き込まれます。 新たな入力要求を受け取ったり、出力バッファの容量が不足したり、デコード・エラーが発生したりすると、decodeメソッドは終了します。 いずれの場合でも、終了の理由を説明するためにCoderResultオブジェクトが返されます。 呼出し元は、このオブジェクトを確認して、入力バッファをいっぱいにするか、出力バッファをフラッシュするか、デコード・エラーからの回復処理を実行して、呼出しを再試行します。

デコード・エラーには一般的な2種類のエラーがあります。 入力バイト・シーケンスがこの文字セットにとって不当な場合は、不正入力エラーが発生します。 入力バイト・シーケンスは正当でも、これを有効なUnicode文字にマップできない場合は、マップ不可文字エラーが発生します。

特定のデコード・エラーがどのように処理されるかは、その種類のエラーに対して要求されるアクションによって決まります。これらのアクションは、CodingErrorActionクラスのインスタンスによって記述されます。 利用可能なエラー・アクションは、エラー入力の無視、戻り値のCoderResultオブジェクトを経由した呼出し元へのエラーの報告、または現在の置換文字列値によるエラー入力の置換です。 置換には初期値"\uFFFD"があり、その値はreplaceWithメソッドで変更できます。

入力形式が正しくないエラーやマップ不可文字エラーが発生した場合、デフォルトのアクションとして、これらのエラーの報告が行われます。 入力形式が正しくないエラーに対するアクションを変更する場合はonMalformedInputメソッドを、マップ不可文字エラーに対するアクションを変更する場合はonUnmappableCharacterメソッドを、それぞれ使用します。

このクラスは、エラー・アクションの実装をはじめとするデコード処理の詳細の多くを処理するように設計されています。 特定の文字セットに対するデコーダ(このクラスの具象サブクラス)が実装する必要があるのは、標準デコード・ループをカプセル化する抽象メソッドdecodeLoopだけです。 これに加え、内部状態を保持するサブクラスは、implFlushメソッドとimplResetメソッドをオーバーライドする必要があります。

このクラスのインスタンスは、複数のスレッドで並行して使用することはできません。

導入されたバージョン:
1.4
関連項目: