0

大きな ASCII テキスト ファイル (20GB) を 1 行ずつ読み取り、これらの行の一部を別のファイルにコピーしたいと考えています。次のコード例では、出力ファイルへの書き込み時にデータが失われます。いくつかの 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 に答える