为什么没有BufferedReader缓冲输入?

时间:2016-05-28 11:08:11

标签: java io

我运行了以下示例:

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__

它会使字符与新行一起打印。为什么?我预计缓冲区不满,因此应该没有输出。

1 个答案:

答案 0 :(得分:3)

BufferedReader尽可能缓冲数据。在这种情况下,没有数据要缓冲。因此,它会立即返回您输入的内容。 BufferedReader在与大型流(例如文件FileInputStream)一起使用时很有用,并且在所有情况下,read方法在场景后面返回一个字符,BufferedReader读取更多数据(取决于来自相关InputStream的缓冲区大小)并缓存它以提高性能。