什么是文件IO流缓冲区?

时间:2011-12-13 05:57:33

标签: ruby stream buffer

我在这里查看了一些论坛帖子,找不到我正在寻找的内容。假设您正在通过Ruby阅读文本文档。我理解流本质上是逐字节的字符。在这种情况下,缓冲的目的/最佳做法是什么?我的书中展示了大量使用缓冲区的例子,但没有真正描述缓冲区是什么或为什么它存在。设置缓冲区时应该考虑什么?例如,本书将以下方法说明为:

read(n,buffer = nil)读取n个字节,直到字节准备好

我不明白“直到字节准备就绪”的含义是什么意思。缓冲区是否在此发挥作用?请随意指出我解释的另一个地方,我不能为我的生活找到它。

2 个答案:

答案 0 :(得分:0)

Picaxe for IO#read的书说:

  

如果省略int,则从I / O流读取最多int个字节或读取文件末尾。如果在文件末尾调用,则返回nil。如果提供了buffer(一个String),则相应地调整它的大小,并直接读入输入。

答案 1 :(得分:0)

IO不仅可以是文件,还可以是网络套接字。在网络中,您经常会遇到准备处理更多数据的情况,但远程端会暂停数据发送。

(在这些情况下,您通常会在浏览器中看到进度条或微调器元素)

因此,如果您使用常规文件,则字节始终'就绪'。