我想逐行讀取大的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