Buscando en un archivo comprimido (.gz) usando java

Buscando en un archivo comprimido (.gz) usando java

Tenemos archivos grandes en los que necesitamos hacer búsquedas de patrones. Parece que cuando usamos GZIPInputStream, descomprime el archivo en la memoria y luego necesito buscarlo. En la memoria, un archivo sin comprimir, por ejemplo, toma 600 MB y recibimos al menos 10 solicitudes a nuestro servidor y no podemos permitirnos la búsqueda de archivos de 2 o 3 GB en la búsqueda de memoria. Lo que buscamos es ¿tenemos alguna forma de descomprimir línea por línea y hacer la búsqueda? (o) cualquier otra solución para este problema.

Respuesta1

ZLib admite la descompresión parcial y secuencial, por lo que puede leer una parte del archivo gzip (pero recuerde que los archivos gzip tienen un encabezado) y llamar a util.zip.Inflater con la cantidad de bytes que desea inflar.

Tenga en cuenta en particular el método

setInput(byte[] b, int off, int len)

eso le permite comenzar con bytes en el archivo gzip y leer y descomprimir len bytes desde ese punto.

Javadoc está aquí:http://docs.oracle.com/javase/6/docs/api/java/util/zip/Inflater.html

información relacionada