Pesquisando em um arquivo compactado (.gz) usando java

1

Temos arquivos grandes em que precisamos fazer pesquisas de padrões. Parece que quando usamos o GZIPInputStream ele descompacta o arquivo na memória e então eu preciso procurar nele. Na memória um arquivo descompactado como exemplo, tendo 600MB e temos 10, pelo menos, pedidos ao nosso servidor e não podemos permitir a pesquisa de 2 ou 3GB de arquivos na busca de memória. O que estamos procurando é que temos uma maneira de descompactar linha por linha e fazer a busca? (ou) qualquer outra solução para este problema.

    
por user2031973 17.12.2013 / 10:49

1 resposta

1

O ZLib suporta descompactação parcial e seqüencial, assim você pode ler em uma parte do arquivo gzip (mas lembre-se de que os arquivos gzip possuem um cabeçalho) e chamar util.zip.Inflater com o número de bytes que você deseja inflar. p>

Note em particular o método

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

que permite que você inicie com bytes desativados no arquivo gzip e leia e descompacte os bytes de tamanho a partir desse ponto.

O Javadoc está aqui: link

    
por 17.12.2013 / 11:30

Tags