这是我的问题:一个大的 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/