如何在 Java 中逐行读取大文本文件而不导致内存泄漏?
大家好!我是 Java 新手,在读取大日志文件(约 500 MB)时遇到了问题。我需要单独处理每一行,但当我尝试一次性读取整个文件时,程序会抛出 OutOfMemoryError。
以下是我尝试的方法:
```java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
File file = new File("bigfile.log");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
// 处理行
System.out.println(line);
}
scanner.close();
}
}
```
但对于大文件,这种方法运行非常慢且占用大量内存。我听说过 BufferedReader,但不知道如何正确使用。请告诉我如何高效地逐行读取文件,而不会一次性将所有内容加载到内存中?最好附上代码示例。
标签:java, 性能