2

これはもっと理論的な問題かもしれません。より大きなファイル(〜22GB)に解凍される圧縮ファイル(〜2 GB)があるシナリオがあります。このプロセスには約20分かかります。つまり、このプロセスが実行されるたびに約19分59秒が無駄になります。私の質問は次のとおりです。解凍されているファイルからストリームを開き、データを操作する別のプログラムに情報を渡すことは可能ですか?基本的に、ファイル内のすべての行はレコードですが、解凍中に行が完全にデコードされたことを検出する手法を見つけることができませんでした。一般的なアルゴリズムまたはJavaライブラリは価値があります。

4

2 に答える 2

3

はい、これは簡単です。UNIXでは、そうするかもしれません

bzcat compressedfile.bz2 | mainprogram

次に、メインプログラムは、標準入力で圧縮解除されたストリームを読み取ることができます。zip および gzip 用の同様のコマンドライン プログラムが存在します。

メイン プログラムが標準入力ではなくファイルから読み取る必要がある場合は、名前付きパイプを使用します。

Windows を使用している場合、同様のツールがある場合とない場合があります。

于 2012-05-22T19:44:30.417 に答える
3

を使用して、gzip ファイルを順番に読み取ることjava.util.zipができます。GZIPInputStream次に、独自のバッファリングを実装して行を抽出するかBufferedReaderreadLineメソッドで使用できます。

于 2012-05-22T19:44:39.610 に答える