java 逐行处理大文件
时间: 2023-08-27 17:03:53 浏览: 41
处理大文件时,逐行读取和逐行写入可能会导致内存不足。因此,可以使用Java中的BufferedReader和BufferedWriter类来处理大文件,避免一次性将整个文件读入内存。
具体操作如下:
```java
import java.io.*;
public class ProcessLargeFileLineByLineExample {
public static void main(String[] args) {
String inputFile = "path/to/largeFile.txt";
String outputFile = "path/to/newFile.txt";
try {
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile));
String line;
while ((line = reader.readLine()) != null) {
// 在此处处理每一行,例如:
// writer.write(processLine(line));
// writer.newLine();
}
reader.close();
writer.close();
System.out.println("处理成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在此基础上,你可以在`while`循环中逐行处理文件内容,并将处理后的结果写入输出文件中。
注意,如果文件较大,可能需要设置较大的缓存区大小,即在创建`BufferedReader`和`BufferedWriter`对象时指定缓存区大小:
```java
BufferedReader reader = new BufferedReader(new FileReader(inputFile), 8192);
BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile), 8192);
```
其中,`8192`表示缓存区大小,单位为字节。你可以根据实际情况设置合适的缓存区大小。