2011-07-14 13 views
0

私はBufferedReaderを使用しています。私はちょうどすべての行がキーボードから値を読み取られた後にBufferedReaderをクリアする方法を知りたい。私のように使用しています使用後にバッファをクリアする方法は?

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

私を助けてください。

+2

文字列バッファはどこにありますか?私はいくつかのコードが必要だと思っています... – home

+0

私は100行あると言うlines.ifを読んでバッファリーダーを意味するいくつかのポイントは、エラーを介して可能性があります.soこのバッファをクリアする方法。 – ravikrishna89

+0

例外を投げることなく 'InputStreamを正しく読み込む方法'を実際に求めていますか? –

答えて

5

文字列 "バッファ"を "クリア"する理由はありません。メモリ使用が心配されている場合、文字列は使用されなくなったときにJVMによって自動的にガベージコレクトされます。

しかし、

str = null; 

を効果的に文字列への参照を削除します。文字列は不変なので、 "バッファ"を変更してクリアすることはできません。できることは、そのバッファへの参照を削除してガベージコレクションを行うことです。

BufferedReadersについての質問に答えるためにEDIT

...

必要と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

関連する問題