我有一个接收字符串的方法。它可以接受文件路径或文件内容。
当我通过路径时,它会读取并处理它,一切都很好。
当我传递内容时,当检查文件路径是否存在时,它以string contains null byte
崩溃
这是代码的一部分,用于检查传递的参数是否为文件:
contents = File.exists?(param) ? File.read(param) : param
我的问题是:是否有另一种方法来检查param
是否是二进制内容而不是File.exists?
的路径
答案 0 :(得分:1)
您可能会检查字符串是否预先包含空字节:
contents =
case input
when /\u0000/ then param
when File.exists?(param) then File.read(param)
else param
end
或者,甚至更容易地,除非File#read
成功了,否则请回到param:
contents = File.read(param) rescue param