2011-12-13 191 views
0

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

读(N,缓冲=无)n个字节读,直到字节准备

我不明白的声明“,直到字节准备好“的意思。缓冲区在这方面起作用吗?请随时将我指向另一个解释这个地方的地方,但我无法为自己的生活找到它。

+1

你在用什么书? –

+0

“Ruby编程语言”Flanagan&Matz –

回答

0

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

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

所以,如果你使用的是普通文件,字节是总是“准备好”。

+0

这很有道理,所以如果我将缓冲区设置为某个任意值,这会有什么影响?这是否意味着在处理开始之前拉入“x”字节的信息? –

+0

这里的缓冲区只需要避免不必要的内存分配/释放,当你多次读取'read'时,它不会影响读取文件的方式。 –

0

的PICAXE书IO#读说:

读取最多从I/O流或文件的末尾诠释字节如果省略INT。如果在文件结尾处调用,则返回nil。如果提供了缓冲区(字符串),则会相应地调整其大小,并直接将输入读入。