2016-05-28 3 views
1

私は、次の例走っ:なぜBufferedReaderは入力をバッファしませんか?

public static void main(String[] args) throws IOException{ 
     Reader reader = new BufferedReader(new InputStreamReader(System.in)); 
     int character; 
     do{ 
      character = reader.read(); 
      System.out.println(character); 
     } while(character != '\n'); 
    } 

をし、実際の行動によって混乱していました。私はBufferedReaderのデフォルトのバッファサイズが1文字以上を保持するのに十分な大きさだと考えました。

しかし、私は

a__NEW_LINE__ 

に入ったときに文字が改行と一緒に印刷されます。どうして?私は、バッファがいっぱいではないと予想したので、出力がないはずです。可能であれば、データをバッファリングする。

+0

重複した質問。 [この回答](http://stackoverflow.com/questions/4007534/why-cant-we-read-one-character-at-a-time-from-system-in)を確認してください。 –

答えて

3

BufferedReader可能であれば、データをバッファする。この場合、バッファするデータはありません。それで、あなたがすぐに入力したものを返します。 BufferedReaderは、ファイル(FileInputStream)などの大きなストリームで使用され、すべての場合に、シーンの後ろに1文字返されるreadメソッドは、が関連するInputStreamからより多くのデータを読み取り(バッファサイズに依存)、パフォーマンスを向上させるためにキャッシュします。

関連する問題