一行,不一定是一次读出来的
BufReader 像在文件和你的代码之间摆了一个周转箱。底层每次搬一批字节;read_line 再从箱子里寻找换行符。缓冲区边界可以切在任何地方,甚至切进一个汉字的 UTF-8 字节中间。
BUFREAD / BYTE LAB
文件中的 UTF-8 字节
下一批换行 0A
BufReader 内部暂存
还没有搬入字节
交给业务代码的完整行
遇到换行符后才产出
BufReader 像在文件和你的代码之间摆了一个周转箱。底层每次搬一批字节;read_line 再从箱子里寻找换行符。缓冲区边界可以切在任何地方,甚至切进一个汉字的 UTF-8 字节中间。