我有问题,而在Java中排序(内存映射?)文件中的二进制搜索相当接近
我想使用Java MappedByteBuffers在大文件中实现对字符串的二进制搜索,但就我而言,大文件是使用bzip2压缩的。假设该文件是使用-1选项100k块压缩的。(实际上我不知道确切的选项,但是我可以重新打包文件)。
我应该如何在这样的MappedByteBuffer中搜索字符串?如何解压缩1个块?是否有一些标准库,或者我应该阅读标题,放气节和crc?那些块是处于压缩状态的100k,还是处于未压缩数据长度的100k?最后一块看起来如何?
是否有人对压缩文件进行过BinarySearch,也许不是用Java?
您将需要读取文件以获得每个块开始的索引。一旦有了这个,就可以对这些块进行二进制搜索。注意:如果您有基础记录或键,则可以将其拆分为多个块。
更好的解决方案是自己构建压缩文件。将已知数量的记录写入一个块,然后分别压缩它们。另外,您可以编写一个索引来说明每个块的起始位置以及该块的第一个键。这样一来,您无需解压缩所有键就可以找到正确的块,并且每次搜索仅解压缩一个块,而不是log2(n)个块。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句