Вы понимаете, что вы можете stream , используя стандартные классы библиотеки Java, верно?Это довольно тривиально, что-то вроде:
GZIPInputStream stream = new GZIPInputStream(new FileInputStream("some_file.gz"));
BufferedReader reader = new BufferedReader(stream);
// Now read line by line... till you hit the content you want.
Весь файл не распакован на диске, просто порции по мере необходимости в памяти.И вы можете при желании повторно сжать и записать снова, используя соответствующие выходные потоки.