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

クラスCharsetEncoder

java.lang.Object
java.nio.charset.CharsetEncoder

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

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

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

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

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

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

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

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

特定のエンコード・エラーがどのように処理されるかは、その種類のエラーに対して要求されるアクションによって決まります。これらのアクションは、CodingErrorActionクラスのインスタンスによって記述されます。 利用可能なエラー・アクションは、エラー入力の無視、戻り値のCoderResultオブジェクトを経由した呼出し元へのエラーの報告、または現在の置換バイト配列値によるエラー入力の置換です。 置換は、最初にエンコーダのデフォルトの置換に設定されます。多くの場合、(ただし、常に)には初期値{ (byte)'?' }があります。この値は、replaceWithメソッドを介して変更できます。

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

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

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

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