java - 使用 Java 的 ByteBuffer 读取百万条消息

标签 java io nio bytebuffer

这是我的问题:一个大的 gzip 文件;数百万条消息。

每条消息包括:

***************** *************** ****************** 
* 2-byte LENGTH * * 1-byte TYPE * * N-byte PAYLOAD * , where N = (LENGTH-1).
***************** *************** ******************

根据 TYPE,我需要从 PAYLOAD 中的偏移量读取几个字节并选择接受或拒绝该消息。

我知道如何使用 java.io.DataInputStream 来做这类事情,但这似乎是 java.nio.ByteBuffer (see here!) 的完美应用。但是,我需要一些帮助来设置它。

那么,我如何使用 ByteBuffer 从我的 gzip 文件中读取消息?

更新

我想我想看到的是代码的框架实现,它可以让我走上正确的轨道,有效地使用 ByteBuffer。谢谢!

最佳答案

很抱歉没有回答您的问题,但我不确定在这里使用 ByteBuffer 而不是 DataInputStream 有什么好处。您可能希望通过 GZIPInputStream 放置您的流以膨胀数据。

GZIPInputStream gzipInput = new GZIPInputStream(yourInputStream);
DataInputStream dataInput = new DataInputStream(gzipInput);

使用 ByteBuffer,您可能只是包装从输入流中读取的字节,没有任何优势。

关于java - 使用 Java 的 ByteBuffer 读取百万条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326634/

相关文章:

java - Eclipse 和 .properties 文件中的不同构建配置

java - 如何使用 Apache POI 旋转电子表格单元格中的文本?

java - 如何设置 jFormattedTextField 使其只允许 2 个数字?

c - 程序写入socket后自动关闭

python - 读取一个大的 big-endian 二进制文件

java - 如何检测流中的第一个文件

java - Kafka Streams DSL 到处理器 API 之间有什么区别

c# - 文件读取问题 C++/C#

java - 如何读取服务器java.nio中的字符集UTF-8编码缓冲区

java - 当SelectableChannel注册方法时会得到CancelledKeyException