2011-12-13 542 views
0

我已經在這裏查看了一些論壇帖子,找不到我正在尋找的東西。假設您正在通過Ruby閱讀文本文檔。我明白流本質上是逐字節進入的字符。在這種情況下緩衝的目的/最佳做法是什麼?我的書展示了很多正在使用的緩衝區的例子,但是沒有真正描述緩衝區是什麼或者它爲什麼存在。設置緩衝區時我應該考慮什麼?例如,書中說明了以下方法:什麼是文件IO流緩衝區?

讀(N,緩衝=無)n個字節讀,直到字節準備

我不明白的聲明「,直到字節準備好「的意思。緩衝區在這方面起作用嗎?請隨時將我指向另一個解釋這個地方的地方,但我無法爲自己的生活找到它。

+1

你在用什麼書? –

+0

「Ruby編程語言」Flanagan&Matz –

回答

0

IO不僅可以是文件,也可以是網絡套接字。而在網絡中,您經常會遇到可以處理更多數據的情況,但遠程端在數據發送時會暫停。

(通常你看到一個進度條或者在這些情況下,您的瀏覽器中的微調元素)

所以,如果你使用的是普通文件,字節是總是「準備好」。

+0

這很有道理,所以如果我將緩衝區設置爲某個任意值,這會有什麼影響?這是否意味着在處理開始之前拉入「x」字節的信息? –

+0

這裏的緩衝區只需要避免不必要的內存分配/釋放,當你多次讀取'read'時,它不會影響讀取文件的方式。 –

0

的PICAXE書IO#讀說:

讀取最多從I/O流或文件的末尾詮釋字節如果省略INT。如果在文件結尾處調用,則返回nil。如果提供了緩衝區(字符串),則會相應地調整其大小,並直接將輸入讀入。