我想逐行读取一个大的ASCII文本文件(20GB),并将这些行的一部分复制到一个单独的文件中。在输出文件中写入时,以下示例代码会丢失数据。我用一些printlns测试了Reader,并按预期工作。我试图增加BufferedWriter的缓冲区,但没有改进。 flush()也不起作用。在这种情况下,输出文件应该是大约40MB。
我希望你能帮助我, 问候蒂姆
public void split() throws Exception{
BufferedReader inStream = new BufferedReader(new FileReader("input.txt"));
BufferedWriter outStream = new BufferedWriter(new FileWriter("output.txt"));
for(int i=0;i<700000;i++){
String tempString = inStream.readLine().trim();
if(doOtherStuff(tempString,i)){
break;
}
outStream.write(tempString);
outStream.newLine();
}
inStream.close();
outStream.close();
}
答案 0 :(得分:0)
也许你是这个意思?
for (;;) {
String tempString = inStream.readLine();
if (tempString == null)
break;
tempString = tempString.trim();
if(doOtherStuff(tempString,i)){
continue; // Skip writing, continue with next line
}
outStream.write(tempString);
outStream.newLine();
}
如果没有null测试,EOF会抛出异常。