我在这里查看了一些论坛帖子,但找不到我想要的。假设您正在通过Ruby读取文本文档。我理解流本质上是一个字节接一个字节的字符。在这种情况下,缓冲的目的/最佳实践是什么?我的书展示了大量使用缓冲区的例子,但没有真正描述缓冲区是什么,或者它为什么存在。设置缓冲区时应该考虑什么?例如,书中举例说明了以下方法:
read(n, buffer=nil)读取n个字节,直到字节准备好
我不明白"until the bytes are ready"是什么意思。缓冲在其中起作用吗?请随时为我指出另一个解释这个的地方,我自己也找不到IO不仅可以是文件,还可以是网络套接字。在网络中,您经常会遇到这样的情况:您准备处理更多的数据,但远程端在数据发送中暂停。
(在这种情况下,您通常会在浏览器中看到进度条或旋转器元素)
所以,如果你使用的是常规文件,字节是总是 'ready'
Picaxe book for io# read说:
从I/O流读取最多int字节,如果省略int,则读取到文件末尾。如果在文件末尾调用,则返回nil。如果提供了buffer (a String),则相应地调整其大小,并将输入直接读入其中。