2012-02-22 9 views
2

これは私のコードです: (zip形式ファイルはテキストファイルが含まれている)NIOを使用してgzip形式のテキストファイルから行単位のテキストデータを読み取る方法は?

ByteBuffer buffer = ByteBuffer.allocateDirect(8192);    
try { 
     ReadableByteChannel gzc = Channels.newChannel(new GZIPInputStream(Channels.newInputStream(Channels.newChannel(new FileInputStream("C:\\temp\\111.gz"))))); 

     gzc.read(buffer);       
} 
+1

プレーンIOを使用する方が簡単で効率的である可能性はほとんどありません。私はあなたがNIOだけを取るライブラリをサポートしなければならない場合にのみこれを行うでしょう。 –

+0

パフォーマンスの向上はどうですか? – omrid

+0

効率とはパフォーマンスを意味します。メインのボトルネックは圧縮/伸張であり、余分なレイヤー/ラッパーを使用するとわずかに遅くなる可能性があります(それほど多くはありません)。ダイレクトByteBufferを使用するとシステム全体のコピー量を減らすことができます*。 –

答えて

0

パフォーマンスは、バッファサイズに依存します。 BufferedInputStream()を大きなバッファ(たとえば!MB)でラップして、一度に多くのブロックをディスクから得ることができます。

関連する問題