バッファサイズ4096などの構造が必要な場合に遭遇し続けます。
- バイトを書き込む
- そこからバイトを読み取る
- 読み取りをリセットして以前の読み取りに戻します
- 最も重要なことは、データ ウィンドウがバイト配列の終わりに近づくにつれて、コピーを処理する必要がないことです!!! (これは、基本的にラップアラウンドなどを備えた循環バッファによく似ています)
ByteBuffer は、これらの両方で書き込みおよび読み取りを行うと、byte[] と同じくらい心痛のように見えます。配列の先頭が空になり始めます。私はほとんどリストか何かの構造が欲しいだけです....私はそれをすべて自分で管理したいだけです(または、独自の構造を書かなければならないかもしれません)。何らかの種類の InputStream は、マークとリセットを使用すると便利だと思います。これにより、読み取り前にマークを付けて、バッファーにまだ十分なデータがない場合に備えてリセットできます。
これは、データが入ってきて、解析するのに十分なデータがあるか、解析するのに十分でない可能性があり、バッファをいっぱいにして、読み取りと解析を試み、より多くのデータが得られるまでリセットする必要がある、ほぼすべての非同期プログラミングで非常に役立ちます。