首先,我对我的英语感到抱歉。
我正在寻找一种有效的方法来读取 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;
}
有任何想法吗?