【发布时间】:2015-05-06 15:24:23
【问题描述】:
在similar question 中,人们推荐使用 File.read 来读取整个文件。但是当我尝试读取 png 文件(见图 1)时,我只得到第一行(见图 2)。我究竟做错了什么?
【问题讨论】:
-
查看此链接 [如何在 ruby 中读取图像文件][1] [1]:stackoverflow.com/questions/3334179/…
在similar question 中,人们推荐使用 File.read 来读取整个文件。但是当我尝试读取 png 文件(见图 1)时,我只得到第一行(见图 2)。我究竟做错了什么?
【问题讨论】:
使用File.binread读取二进制数据。
在某些操作系统(尤其是 Windows)上,以“二进制模式”(8 位字符)和“文本模式”(7 位字符)打开文件是有区别的。正因为如此,这些 IO 实现可以做一些事情,比如在有零字符时检测文件结尾,或者如果你不告诉它们期待二进制数据,则将 ASCII 范围之外的字符弄乱。
如果你在 Ruby 中打开一个文件,使用模式“rb”而不是“r”会告诉操作系统你需要二进制数据,如果它关心这个,它会做正确的事情。 File.binread() 打开它将使用该模式读取的基础文件。
【讨论】: