2016-05-28 65 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)用於和在所有情況下的讀取方法返回一個字符而在幕後,BufferedReader讀更多的數據,從相關InputStream(取決於緩衝器大小)並將其緩存以提高性能是非常有用的。