2011-07-14 23 views
0

我正在使用BufferedReader。我只想知道在每行從鍵盤讀取值後如何清除BufferedReader。我正在使用像如何在使用後清除緩衝區?

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String male = br.readLine(); 

請幫助我。

+2

字符串緩衝區在哪裏?我想我們需要一些代碼... – home

+0

我的意思是說緩衝區讀取器讀取lines.if說有100行,在某些點它可能會通過錯誤。所以如何清除此緩衝區。 – ravikrishna89

+0

實際上你是否在不拋出Exceptions的情況下詢問'如何正確讀取InputStream'? –

回答

5

確實沒有任何理由要「清除」字符串「緩衝區」。如果您擔心內存使用,那麼當不再使用JVM時,該字符串將自動被垃圾收集。

然而,

str = null; 

將有效地刪除參考的字符串。字符串是不可變的,所以你不能修改「緩衝區」並清除它,你所能做的最好的辦法就是刪除對它的引用,然後讓它收集垃圾。

編輯

回答有關BufferedReaders的問題...

沒有必要也沒有辦法「明確的」一個BufferedReader。如果遇到錯誤,您可以再次調用readLine(),並且之前讀取的內容應該沒有任何影響。如果你從文件中讀取並得到一個異常,你應該檢查你是否在文件末尾,但是因爲你正在從鍵盤讀取數據,我建議再次調用readLine()。

+0

謝謝你,但有什麼方法或功能來清除BUFFER。 – ravikrishna89

5

清除緩衝區沒有任何意義。

如果它是輸出緩衝器,例如BufferedWriter,那麼您可以刷新緩衝區以確保在關閉緩衝區之前已經寫入了所有緩衝的內容。
在這種情況下,您可以在br.readLine()返回null之後關閉緩衝區,這意味着沒有更多輸入需要讀取。

+1

也許應該提到,因爲這個BufferedReader是從鍵盤讀入的,所以你不應該從br.readLine()中獲得null。 – Zarjio

+0

謝謝大家,我明白了,現在我明白了 – ravikrishna89

+0

@Zach,如果System.in流結束,那麼將返回null。 – Atreys