在Ruby中读取整个文件(可能是一个bug)

在类似的问题中,人们建议使用File.read来读取整个文件。 但是当我尝试读取png文件时(见图1),我只得到第一行(见图2)。 我究竟做错了什么? 在此处输入图像描述在此处输入图像描述

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

在某些操作系统(尤其是Windows)上,以“二进制模式”(8位字符)和“文本模式”(7位字符)打开文件之间存在差异。 因此,这些IO实现可以执行诸如在存在零字符时检测文件结束的操作,或者如果您不告诉它们期望二进制数据,则可以执行ASCII范围之外的字符。

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