指定した CharSet を使用して CharSequence を OutputStream に書き込みたい。基本的に、 write(String) が呼び出されたときに、同じ CharSet で初期化された Writer が行うことです。
問題は、多くの CharSequences を書き込む必要があり、一部はかなり大きいことです。さらに複雑なことに、すべてが複数の OutputStream に書き込まれる可能性があります。を使用して簡単に実装できます(実際には、現在そのように実装しています):
byte[] rawBytes = CharSequence.toString().getBytes(CharSet)
for (OutputStream out : outputTargets) {
out.write(rawBytes);
}
しかし明らかに、文字列はここでは完全に不要なガベージ オブジェクトであり、byte[] 配列もそうです。中間オブジェクトなしで直接エンコードできる方法を探しています。驚くべきことに、これは不可能なようです - JRE で CharSequence が受け入れられているところを見たところ、作業が完了する前にすぐに String に変換されます。
CharSet の変換作業のほとんど (すべて?) は非パブリック クラスで行われているようです。
どうすればガベージを回避できますか/JREのCharSetエンコーディング機能を直接使用できますか?