當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Ruby ARGF.read用法及代碼示例

本文簡要介紹ruby語言中 ARGF.read 的用法。

用法

read([length [, outbuf]]) → string, outbuf, or nil

ARGF 讀取 length 字節。命令行上命名的文件通過此方法連接並視為單個文件,因此當不帶參數調用時,此偽文件的內容將全部返回。

length 必須是非負整數或 nil

如果length 是正整數,則read 會嘗試讀取length 字節而不進行任何轉換(二進製模式)。如果在讀取任何內容之前遇到 EOF,它將返回 nil。如果在讀取期間遇到 EOF,則返回少於 length 的字節。在整數 length 的情況下,生成的字符串始終采用 ASCII-8BIT 編碼。

如果 length 被省略或者是 nil ,它會一直讀取到 EOF 並應用編碼轉換(如果適用)。即使在讀取任何數據之前遇到 EOF,也會返回一個字符串。

如果 length 為零,則返回一個空字符串 ("")。

如果存在可選的 outbuf 參數,則它必須引用 String ,它將接收數據。 outbuf 將僅包含方法調用後接收到的數據,即使它一開始不為空。

例如:

$ echo "small" > small.txt
$ echo "large" > large.txt
$ ./glark.rb small.txt large.txt

ARGF.read      #=> "small\nlarge"
ARGF.read(200) #=> "small\nlarge"
ARGF.read(2)   #=> "sm"
ARGF.read(0)   #=> ""

請注意,此方法的行為類似於 C 中的 fread() 函數。這意味著它會重試調用 read(2) 係統調用以讀取具有指定長度的數據。如果您需要像單個 read(2) 係統調用這樣的行為,請考慮 ARGF#readpartial ARGF#read_nonblock

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 ARGF.read。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。