使用BufferedWriter写入时丢失数据

时间:2012-04-15 13:53:47

标签: java file-io bufferedreader bufferedwriter

我想逐行读取一个大的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();  
}

1 个答案:

答案 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会抛出异常。