Java を使用して圧縮 (.gz) ファイルを検索する

Java を使用して圧縮 (.gz) ファイルを検索する

パターン検索が必要な大きなファイルがあります。GZIPInputStream を使用すると、メモリ内でファイルを解凍してから検索する必要があるようです。メモリ内では、たとえば 1 つの解凍されたファイルが 600 MB を占め、サーバーに少なくとも 10 のリクエストが送られますが、メモリ検索で 2 GB または 3 GB のファイルを検索する余裕はありません。探しているのは、行ごとに解凍して検索する方法があるかどうかです。(または) この問題の他の解決策はありますか。

答え1

ZLib は部分的および順次的な解凍をサポートしているため、gzip ファイルの一部を読み込み (ただし、gzip ファイルにはヘッダーがあることに留意してください)、解凍するバイト数を指定して util.zip.Inflater を呼び出すことができます。

特に方法に注目

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

これにより、gzip ファイルの off バイトから開始し、その時点から len バイトを読み込んで解凍することができます。

Javadoc はここにあります:http://docs.oracle.com/javase/6/docs/api/java/util/zip/Inflater.html

関連情報