我一直在遇到我想要一些结构的情况,比方说缓冲区大小4096我可以
ByteBuffer看起来和byte []一样令人心痛,就像你写它并从中读取它们一样,数组的开头开始清空。我几乎只想要一个List或者其他东西的结构......我只是希望它为我管理(或者我可能必须编写自己的结构)。我认为某种类型的InputStream可以很好地使用标记和重置,所以我可以在读取之前进行标记,然后在缓冲区中没有足够数据的情况下进行重置。
这在几乎所有数据进入的异步编程中非常有用,你可能有足够的数据进行解析或者可能没有足够的解析和填充缓冲区,尝试读取和解析并需要重置,直到你有更多的数据
答案 0 :(得分:2)
ByteBuffer
似乎完全正确,当您想要将剩余缓冲区移回到开头时,ByteBuffer.compact()
就是您想要使用的。
答案 1 :(得分:0)
您可以使用this circular byte buffer - 使用getAvailable()方法而不是阅读然后重置。
答案 2 :(得分:0)