簡體   English   中英

BufferedReader / PrintWriter 有問題嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM