[英]Problems with BufferedReader / PrintWriter?
我通過輸入文件的每一行使用 BufferedReader 和 PrintWriter 到 go,對某些行進行更改,結果為 output。 如果一行沒有發生變化,它就按原樣打印到 output 文件中。 然而,出於某種原因,該過程過早結束。 代碼看起來像這樣:
BufferedReader in = new BufferedReader(new FileReader("in.txt"));
FileOutputStream out = new FileOutputStream("out.txt");
PrintWriter p = new PrintWriter(out);
String line = in.readLine();
while(line!=null)
{
if(line is special)
do edits and p.println(edited_line);
else
p.println(line);
line = in.readLine();
}
然而,出於某種奇怪的原因,這個過程在我的輸入文件的最后提前結束(實際上打印出半行)。 這有什么明顯的原因嗎? while 循環顯然由 null 結束。它接近我的 250k+ 行 txt 文件的末尾。 謝謝!
您在哪里刷新/關閉 PrintWriter 或 FileOutputStream? 如果程序退出並且沒有完成,則不會寫出所有結果。
您需要out.close()
(也可能是p.flush()
嗎?)在流程結束時關閉文件 output stream
嘗試在循環后添加一個 p.flush() 。
PrintWriter 沒有啟用自動刷新,因此在程序終止之前文件的最后一位可能沒有刷新。
在 while 循環之后添加一個p.flush()
應該可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.