我们有大型文件,我们需要做模式search。 看起来像当我们使用GZIPInputStream它解压缩内存中的文件,然后我需要做的search。 在内存中一个以600MB为例的非压缩文件,我们至less得到10个请求到我们的服务器,我们不能在内存search中search2或3GB的文件。 我们正在寻找的是我们有一种方法来逐行解压缩并执行search? (或)针对此问题的任何其他解决scheme。
ZLib支持部分和顺序的解压缩,所以你可以读取gzip文件的一部分(但是记住gzip文件有一个头文件)并且调用util.zip.Inflater和你想膨胀的字节数。
特别注意这个方法
setInput(byte[] b, int off, int len)
它可以让你从closures的字节开始到gzip文件,并从这一点读入和解压len字节。
Javadoc在这里: http : //docs.oracle.com/javase/6/docs/api/java/util/zip/Inflater.html