当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。