0

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

1 回答 1

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 会引发异常。

于 2012-04-15T14:01:45.850 回答