是否可以在java中使用压缩对象搜索文件?

时间:2011-05-13 14:38:28

标签: java string search compression

我从ORACLE读到以下bit:

  

我可以在对象的压缩版本上执行方法,例如isempty(zip(serial(x)))吗?

     

由于对象的编码,这对任意对象都不可行。对于特定对象(如String),您可以比较生成的位流。编码是稳定的,因为每次编码同一个对象时,它都被编码为同一组位。

所以我有了这个想法,比如我有4M长的char数组,是否可以使用GZIPOutputStream将其压缩到几百个字节,然后将整个文件映射到内存中,并通过比较位进行随机搜索?假如我正在寻找"abcd"的char序列,我能以某种方式获得"abcd"的压缩版本的位序列,然后只搜索文件吗?感谢。

1 个答案:

答案 0 :(得分:1)

您不能使用GZIP或类似方法来执行此操作,因为在处理流时,每个字节的编码都会发生变化。即确定字节意味着什么的唯一方法是读取之前的所有字节。

如果要随机访问数据,可以将String拆分为更小的部分。这样,您只需要解压缩相对较短的数据部分。