0

私は巨大なファイル(> 1GB)を読み込もうとしていますが、バッファ付きリーダーを使用してランダムアクセスファイルとして読み取るのが効率的だと考えています。

ファイルを1行ずつ読み取り、解析する必要があります

ただし、JAVA IO Apiは初めてなので、どうすればよいかわかりません。

私はあなたの助けに感謝します。

4

3 に答える 3

3

これには、JavaのBufferedReaderを使用できます。

BufferedReader reader = new BufferedReader(new FileReader(fileName));
String line;
while ((line = reader.readLine()) != null) {
  // Do some stuff with the line
}

fileName読み取りたいファイルへのパスです。

于 2012-07-26T15:35:14.123 に答える
0

すべてを最初から読む必要がありますか?開始できるバイトがわかっている場合は、RandomAccessFileを使用してファイルのさまざまな部分にジャンプできます。これを行うのはシーク関数だと思います。

于 2012-07-26T16:02:47.553 に答える
-1

これはJavaで完全に実行可能ですが、私の経験に基づいて提案したいと思います。

Unixプラットフォームを使用している場合は、外部シェルスクリプトを使用してGBのログを検索できます。sedこの目的には非常に最適です。ここでの特定の使用法:http ://www.grymoire.com/Unix/Sed.html

ログファイルを読み取ったりgrepしたりする必要があるときはいつでも、Javaファイルを介してシェルスクリプトを呼び出します。

どのように?

1)Javaコードで、ProcessBuilderクラスを使用します。コンストラクターへの引数としてシェルスクリプトを取ることができます

ProcessBuilder obj = new ProcessBuilder("FastLogRead.sh");

2)プロセスのオブジェクトを作成します

Process process = obj.start();

3)このシェルの出力は、BufferedReadで直接読み取ることができます。

BufferedReader br=new BufferedReader(new InputStreamReader(process.getInputStream()));

長所:

平均で実行を高速化します。10回(約4GBのログファイルを検索しました)

短所:

一部の開発者は、Javaの領域に軽量のシェルスクリプトを導入することを好まないため、Javaを使用したいと考えていRandomAccessFileます。これは正当化されます。

あなたの場合、標準化とパフォーマンスのどちらかを選択できます。

于 2013-02-26T11:13:01.220 に答える