在similar question中,人们建议使用File.read来读取整个文件。但是当我尝试读取png文件时(见图1),我只得到第一行(见图2)。我究竟做错了什么?
答案 0 :(得分:3)
使用File.binread
读取二进制数据。
在某些操作系统(尤其是Windows)上,以“二进制模式”(8位字符)和“文本模式”(7位字符)打开文件之间存在差异。因此,这些IO实现可以执行诸如在存在零字符时检测文件结束,或者如果您不告诉他们期望二进制数据那么将字符扩展到ASCII范围之外的事情。
如果你在Ruby中打开一个文件,使用模式“rb”而不是“r”将告诉操作系统你期望二进制数据,如果它关心它,它将做正确的事情。 File.binread()
打开它将使用该模式读取的基础文件。