まず、私の英語について申し訳ありません。
Javaで大きなファイルを読み取る効果的な方法を探しています。ログ分析プログラムを作成しており、少なくとも 500 MB から 4 GB のログ ファイルがあります。Filechannel クラス (メモリ マップ ファイル) を試しましたが、効果的な結果が得られませんでした。こちらをご覧ください: http://www.linuxtopia.org/online_books/programming_books/thinking_in_java/TIJ314_029.htm
私の目的は、バッファ内のデータを読み取り、正規表現を使用することです。
DumpFilePath ファイルのサイズは約 4 GB です。
public static List<String> anaysis_main(String pattern_string) throws IOException {
List<String> result = new ArrayList<String>();
Pattern pattern = Pattern.compile(pattern_string, Pattern.CASE_INSENSITIVE);
File file = new File(DumpFilePath);
RandomAccessFile raf = new RandomAccessFile(file,"rw");
String line = null;
raf.seek(0);
int i = 0;
while((line=raf.readLine())!=null)
{
Matcher matcher = pattern.matcher(line);
while (matcher.find())
{
result.add(matcher.group(1));
}
}
raf.close();
return result;
}
何か案は?