“你好,阿米戈!你已经使用 BufferedReaderInputStreamReader 类很长时间了。现在我们来探索一下这些类到底做什么。”

InputStreamReader 类是从 InputStream 接口到 Reader 接口的经典适配器。仅此而已。

但简而言之,这就是所发生的的情况。当你从 InputStreamReader 对象请求(读取)下一个字符时,该对象从传递给构造方法的 InputStream 读取几个字节,并将这些字节作为一个字符返回。

但是 Reader 不是最方便使用的对象。通常,我们需要的不是一次读取用户输入的所有字符,而是将这些字符分成几行。

“但是 Reader 类包含 read(CharBuffer s) 方法。不能使用它吗?”

“此方法读取缓冲区大小的数据块并将其放入 CharBuffer 对象。”

文本通常分为几行。因此,read(CharBuffer s) 方法可能一次读取多行。如果我们需要精确读取到每行末尾的文本(即每行中的所有字符,直至换行符为止),则最好寻找其他方法。替代方法确实存在。在 BufferedReader 类中。

BufferedReader 类是在 Reader 之上的一种便捷结构,它包含一种非常简便的方法:readLine()。此方法允许我们从 Reader 一次读取整行文本。当你在代码中调用 readLine 时,它将从 Reader 对象读取字符,直至遇到换行符为止。遇到换行符后,该方法将这些字符粘贴到一个字符串中,然后返回该字符串。

“我经常使用它,但我不知道它是如何工作的。现在我知道了。谢谢,金。”