我不知道如何执行以下操作:我想处理一个非常庞大的文本文件(几乎5千兆字节)。由于我无法将文件复制到临时内存中,我想到了读取前500行(或者尽可能多地放入内存,我还不确定),用它们做些什么,然后继续下一个500行直到我完成了整个文件。
你能发布一个你需要的“循环”或命令的例子吗?因为我尝试过的所有方法都会从头开始,但我想在完成前500行之后再继续。
帮助表示赞赏。
答案 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();