%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%A4%9C%E7%B4%A2%E3%81%99%E3%82%8B.png)
パターン検索が必要な大きなファイルがあります。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