在HUGE文件中读取一组行

时间:2011-08-18 11:58:16

标签: java file text lines

我不知道如何执行以下操作:我想处理一个非常庞大的文本文件(几乎5千兆字节)。由于我无法将文件复制到临时内存中,我想到了读取前500行(或者尽可能多地放入内存,我还不确定),用它们做些什么,然后继续下一个500行直到我完成了整个文件。

你能发布一个你需要的“循环”或命令的例子吗?因为我尝试过的所有方法都会从头开始,但我想在完成前500行之后再继续。

帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

BufferedReader br = new BufferedReader(new FileReader(file));
String line = null;
ArrayList<String> allLines = new ArrayList<String>();

while((line = br.readLine()) != null) {
     allLines.add(line);
     if (allLines.size() > 500) {
          processLines(allLines);
          allLines.clear();
     }
}

processLines(allLines);

答案 1 :(得分:0)

好的,所以你在上面的评论中指出你只想保留某些行,根据某些逻辑将它们写入新文件。您可以一次读取一行,决定是否保留它,如果是,则将其写入新文件。这种方法将使用非常少的内存,因为您在内存中一次只保留一行。这是一种方法:

BufferedReader br = new BufferedReader(new FileReader(file));
String lineRead = null;
FileWriter fw = new FileWriter(new File("newfile.txt"), false);

while((lineRead = br.readLine()) != null)
{
     if (true) // put your test conditions here
     {
         fw.write(lineRead);
         fw.flush();
     }
}
fw.close();
br.close();