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

Reading a whole file in Ruby (possibly a bug)

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

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

在某些操作系统上(特别是 Windows),以 "binary mode"(8 位字符)和 "text mode"(7 位字符)打开文件是有区别的.正因为如此,这些 IO 实现可以做一些事情,比如当有一个零字符时检测文件结尾,或者如果你不告诉它们期望二进制数据则破坏 ASCII 范围之外的字符。

如果您在 Ruby 中打开文件,使用模式 "rb" 而不是 "r" 将告诉 OS 您需要二进制数据,以及它是否关心那,它会做正确的事。 File.binread() 打开它将使用该模式读取的基础文件。