我一直遇到这样的情况,我想要一些结构,比如说缓冲区大小 4096,我可以
- 将字节写入
- 从中读取字节
- 将读取重置回之前的读取
- 最重要的是,当数据窗口接近字节数组末尾时,不必处理复制内容! (这很像一个循环缓冲区,基本上带有环绕或其他东西)
ByteBuffer 看起来和 byte[] 一样令人心痛,当你在这两者上写入和读取时,数组的开头开始变空。我几乎只想要一个列表或其他东西的结构......我只希望它全部为我管理(或者我可能必须编写自己的结构)。我认为某种类型的 InputStream 带有标记和重置会很好,这样我可以在读取之前进行标记,然后重置,以防缓冲区中还没有足够的数据。
这在几乎所有异步编程中都非常有用,其中数据进来,您可能有足够的数据来解析,或者可能没有足够的数据来解析,您填充缓冲区,尝试读取和解析并需要重置,直到有更多数据.
最佳答案
ByteBuffer
似乎完全适合这种情况,而 ByteBuffer.compact()
正是当您想要将剩余缓冲区移回开头时您想要使用的。
关于java - 写/读字节的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15906681/