Me gustaría poder hacer acceso aleatorio en un archivo comprimido. Puedo permitirme realizar un preprocesamiento (por ejemplo, crear algún tipo de índice), siempre que el resultado del preproceso sea mucho menor que el archivo en sí.Acceso aleatorio secuencia de gzip
¿Algún consejo?
Mis pensamientos fueron:
- Hack en una aplicación existente y gzip serializar su estado descompresor cada, digamos, 1 megabyte de datos comprimidos. Luego, para hacer un acceso aleatorio, deserializar el estado del descompresor y leer desde el límite del megabyte. Esto parece difícil, especialmente porque estoy trabajando con Java y no pude encontrar una implementación de gzip pura-java :(
- Vuelva a comprimir el archivo en trozos de 1Mb y haga lo mismo que antes. Esto tiene la desventaja de duplicar el espacio en disco requerido.
- Escribir un analizador simple del formato gzip que no hace ninguna descompresión y solo detecta e indexa los límites del bloque (si aún hay bloques: aún no he leído la descripción del formato gzip)
Gracias, eso es genial! Si tan solo encontrara una manera de usarlo cómodamente desde Java ... – jkff
@jkff: si no necesita una implementación multiplataforma, consulte JNA. Es sorprendentemente fácil de usar como una forma de llamar a las bibliotecas C. –
Gracias de nuevo, lo hice y funciona como un encanto!Rex, gracias a ti también: utilicé JNA :) – jkff