使用缓冲读取器读取随机访问文件

时间:2012-07-26 15:17:50

标签: java file io java-io

我正在尝试阅读一个巨大的文件(> 1GB),我认为将其作为带有缓冲读卡器的随机访问文件来阅读会很有效。

我需要逐行读取文件并解析它

然而,作为JAVA IO Api的新手,我不知道我该怎么做..

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

您可以使用Java的BufferedReader:

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

fileName是您要阅读的文件的路径。

答案 1 :(得分:0)

您是否需要从头开始阅读所有内容?如果您知道可以从哪个字节开始,则可以使用RandomAccessFile跳转到文件的不同部分。我认为这是寻求功能。

答案 2 :(得分:-1)

虽然它在java中完全可行,但我想根据我的经验建议:

如果您使用的是Unix平台,则可以使用外部shell脚本来搜索日志的GB。 sed非常适合此目的。具体用法:http://www.grymoire.com/Unix/Sed.html

每当需要读取/ grep日志文件时,通过java文件调用shell脚本。

如何吗

1)在您的java代码中,使用ProcessBuilder类。它可以将shell脚本作为构造函数

的arg

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

2)为Process

创建对象

Process process = obj.start();

3)您可以通过此

直接在BufferedRead中读取此shell的输出

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

<强>优点:

平均加速执行。 10次​​(我搜索了大约4GB的日志文件)

<强>缺点:

有些开发人员不喜欢在java领域引入轻量级shell脚本,因此想要使用java的RandomAccessFile。这是有道理的。

对于您的情况,您可以选择标准化和性能。