java - 写/读字节的数据结构

标签 java java-io

我一直遇到这样的情况,我想要一些结构,比如说缓冲区大小 4096,我可以

  1. 将字节写入
  2. 从中读取字节
  3. 将读取重置回之前的读取
  4. 最重要的是,当数据窗口接近字节数组末尾时,不必处理复制内容! (这很像一个循环缓冲区,基本上带有环绕或其他东西)

ByteBuffer 看起来和 byte[] 一样令人心痛,当你在这两者上写入和读取时,数组的开头开始变空。我几乎只想要一个列表或其他东西的结构......我只希望它全部为我管理(或者我可能必须编写自己的结构)。我认为某种类型的 InputStream 带有标记和重置会很好,这样我可以在读取之前进行标记,然后重置,以防缓冲区中还没有足够的数据。

这在几乎所有异步编程中都非常有用,其中数据进来,您可能有足够的数据来解析,或者可能没有足够的数据来解析,您填充缓冲区,尝试读取和解析并需要重置,直到有更多数据.

最佳答案

ByteBuffer 似乎完全适合这种情况,而 ByteBuffer.compact() 正是当您想要将剩余缓冲区移回开头时您想要使用的。

关于java - 写/读字节的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15906681/

相关文章:

java - 如何使用 JFileChooser 将 .txt 文件保存在所需位置

java - 无法解决 jira-rest-java-client 依赖性

java - 如何获取eclipse工作空间路径

java - 新的 Java 单元测试框架

java - 使用 Java 在映射的网络驱动器中创建文件夹

java-io - CharArrayReader和StringReader有什么用?

java - 如何更改 Sublime 中 Java 的路径?

java - JSF 看不到带注释的 Bean

java - 为什么会抛出此异常以及如何从中恢复?

java - Java 中的文件更改检测器(95% 已实现,但在一种情况下需要帮助)