【问题标题】:Reading a whole file in Ruby (possibly a bug)在 Ruby 中读取整个文件(可能是一个错误)
【发布时间】:2015-05-06 15:24:23
【问题描述】:

similar question 中,人们推荐使用 File.read 来读取整个文件。但是当我尝试读取 png 文件(见图 1)时,我只得到第一行(见图 2)。我究竟做错了什么?

【问题讨论】:

标签: ruby io


【解决方案1】:

使用File.binread读取二进制数据。

在某些操作系统(尤其是 Windows)上,以“二进制模式”(8 位字符)和“文本模式”(7 位字符)打开文件是有区别的。正因为如此,这些 IO 实现可以做一些事情,比如在有零字符时检测文件结尾,或者如果你不告诉它们期待二进制数据,则将 ASCII 范围之外的字符弄乱。

如果你在 Ruby 中打开一个文件,使用模式“rb”而不是“r”会告诉操作系统你需要二进制数据,如果它关心这个,它会做正确的事情。 File.binread() 打开它将使用该模式读取的基础文件。

【讨论】:

    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2012-05-10
    • 1970-01-01
    • 2011-12-04
    • 2015-08-07
    • 1970-01-01
    相关资源
    最近更新 更多