如果我有以下示例文件,其中每个数字代表一个字节(123 有字节 1、2 和 3):
123456789
假设我创建了一个 FileInputStream。这会逐字节读取二进制。所以 .read() 返回 1,然后是 2,等等。现在假设我创建了一个缓冲区。它读取的初始块(如果我正确理解缓冲区)是 1-5。这使它不仅可以逐字节读取,而且可以读取整行字符等。但是如果我再次点击 .read() ,我从 6 开始,而不是 BufferedReader 停止的位置(所以如果 3 是换行符,我告诉 BufferedReader 打印第一行,它打印 1-2,然后使用 FileInputStream 中的 .read() 给我 6,而不是 3。)
为了能够通过分隔符解析数据,扫描器是否隐式创建缓冲区,就像 BufferedReader 如何创建缓冲区以便它可以找到换行符等?如果我将一个单独的 FileInputStream 传递给扫描仪,使用 .read() 将不会打印扫描仪找到的第一个分隔符之后的第一个字节,而是在扫描仪占用的“块”末尾打印?