如何在Java中对内存映射的压缩文件进行二进制搜索?

德基谢列夫

我有问题,而在Java中排序(内存映射?)文件中的二进制搜索相当接近

我想使用Java MappedByteBuffers在大文件中实现对字符串的二进制搜索,但就我而言,大文件是使用bzip2压缩的。假设该文件是使用-1选项100k块压缩的。(实际上我不知道确切的选项,但是我可以重新打包文件)。

我应该如何在这样的MappedByteBuffer中搜索字符串?如何解压缩1个块?是否有一些标准库,或者我应该阅读标题,放气节和crc?那些块是处于压缩状态的100k,还是处于未压缩数据长度的100k?最后一块看起来如何?

是否有人对压缩文件进行过BinarySearch,也许不是用Java?

彼得·劳瑞

您将需要读取文件以获得每个块开始的索引。一旦有了这个,就可以对这些块进行二进制搜索。注意:如果您有基础记录或键,则可以将其拆分为多个块。

更好的解决方案是自己构建压缩文件。将已知数量的记录写入一个块,然后分别压缩它们。另外,您可以编写一个索引来说明每个块的起始位置以及该块的第一个键。这样一来,您无需解压缩所有键就可以找到正确的块,并且每次搜索仅解压缩一个块,而不是log2(n)个块。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章