%20usando%20java.png)
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