我有一个二进制文件,其中包含信息块(我将其称为数据包)。每个数据包由一个固定长度的头部和一个可变长度的主体组成。我必须从包头本身确定身体的长度。我的任务是从文件中读取这些数据包并对它们执行一些操作。目前我正在执行此任务,如下所示:Java - 并行读取二进制文件
- 将文件作为随机访问文件打开并转到特定的起始位置(用户指定的起始位置)。从这个位置读取第一个数据包。在一个循环
- 读取下一个数据包
- 执行我的操作 执行具体操作
- 那么这个推移,直到我打文件标志的结束。
正如您可以猜到,当文件大小是巨大的,连续读取每个数据包并处理它是一个耗时的事情。我想以某种方式将这个操作(即数据包生成操作)并行化并将其放入某个阻塞队列中,然后从队列中并行检索每个数据包并执行我的操作。
有人可以建议我怎么可以并行生成这些数据包?
每个数据包头文件中的位置(第一个之后)是否取决于前面的数据包的大小? –
@Ted:不是。我根据读取字节的特定签名来检测下一个数据包头的开始。它会在前一个数据包结束后的某处出现,但不会出现在任何特定位置。 – Sujay