Ruby File类上的readbytes的NoMethodError

时间:2013-11-03 02:59:25

标签: ruby ruby-1.8

我正在编写一个脚本来读取PNG文件中的头字节。我想在readbytes上使用File方法:

f = File.open("Boots.png", "rb:binary")
header = f.readbytes(8)

但我在第二行得到NoMethodError

NoMethodError: undefined method `readbytes` for #<File:Boots.png>
    from (irb):2
    from #:0

为什么呢?据我在文档中可以看出,readbytesIO类的一部分,是File的父级,应该可以使用,没有要求或包含。我几乎完全按照David Flanagan指南中的一个样本;我甚至可以在Ruby安装中找到源readbytes.rb文件。

请注意,我在Windows 7上运行MRI 1.8.7。

1 个答案:

答案 0 :(得分:3)

readbytes不是IOFile的成员(您在哪里找到了文档中的条目?)。使用IO#read([length])从文件中读取字节。您可能需要String#unpack将字符串转换为您想要比较的魔术标题。