在 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()
打开它将使用该模式读取的基础文件。
在similar question中,人们建议使用File.read来读取整个文件。但是当我尝试读取 png 文件时(见图 1),我只得到第一行(见图 2)。我究竟做错了什么?
使用File.binread
读取二进制数据。
在某些操作系统上(特别是 Windows),以 "binary mode"(8 位字符)和 "text mode"(7 位字符)打开文件是有区别的.正因为如此,这些 IO 实现可以做一些事情,比如当有一个零字符时检测文件结尾,或者如果你不告诉它们期望二进制数据则破坏 ASCII 范围之外的字符。
如果您在 Ruby 中打开文件,使用模式 "rb" 而不是 "r" 将告诉 OS 您需要二进制数据,以及它是否关心那,它会做正确的事。 File.binread()
打开它将使用该模式读取的基础文件。