私はPDF文書を生成し、それをOutputStream
に書き込むライブラリを持っています。 OutputStream
はPDFライブラリに渡されます。結果データをList<Byte[]>
List<byte[]>
に保存する必要があり、各エントリの長さは255バイトに固定されています。私のバイトチャンクのリストを直接出力するOutputStream
ここで最も簡単な解決策は、ByteArrayOutputStream
を使用して、結果のバイト配列をバイト配列リストに書き込む(そして逆アセンブルする)ことです。
しかし、私はより少ないメモリを必要とするより効率的なソリューションが必要です。出力ストリームでバイト配列リストを直接生成したい。
私の解決策は、OutputStream
を上書きし、write()
を上書きして、List<byte[]>
に直接書き込んでください。
これは、すでに受け入れられているバイト数を追跡するなどの手間が必要なため、他の利用可能なOutputStream
実装を使用すると簡単な解決策があるのだろうかと思います。
など。どういうわけかBufferedOutputStream
の活用を考えましたが、うまくいかないと思います。基本的な考え方は別のOutputStream
を実装し、BufferedOutputStream
に255バイトの容量で渡し、満杯になったときにバッファをフラッシュするたびに新しいチャンクエントリを書き込むことでした。これはうまくいきません。BufferedOutputStream
は、あまりにも多くのバイトが(私のソースコードを理解している限り)一度に書き込まれると、バッファをもう使用しないためです。
「リスト」を作成しないのはなぜですか? –
Shadov
'255バイトのチャンクのリストが必要です'を定義します。あなたが何を求めているのか不明です。 – EJP
@EJP 'List'各バイトの[] 'エントリの長さは255です(最後のエントリは255バイト未満です)。 @Whatzsはい、ターゲットサーバと通信するフレームワークが後者を期待していなかった場合、Byte []の代わりに 'byte []'を使うことができました。 –
fishbone