我想逐行读取大的ASCII文本文件(20GB),并将这些行的一部分复制到单独的文件中。以下示例代码在输出文件中写入时会丢失数据。我用一些printlns测试了Reader,并按预期工作。我试图增加BufferedWriter的缓冲区,但没有改进。 flush()也不起作用。这种情况下的输出文件应该在40MB左右。使用BufferedWriter书写时丢失数据
我希望你能帮助我, 问候添
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();
}
为什么你使用for循环而不是while循环? – 2012-04-15 13:55:28
我需要复制多少行的信息与文件的第一行一起读入。我认为这与问题没有关系,所以简单点说吧。 – timmiotooltim 2012-04-15 13:58:35
你不告诉我们什么数据丢失或在哪里的具体情况,你不知道你的代码为什么行为不端,所以***全部***是相关的。我的经验是,无论你如何计算文件的行数,使用while循环的时候要好得多,并让BufferedReader让你知道什么时候它的行数不足以读取。这是更多的白痴证明。 – 2012-04-15 14:00:04