将Marshalled数据写入文件时,“ArgumentError:string包含空字节”

时间:2015-10-25 22:44:48

标签: ruby json null yaml marshalling

我有一个大型数组,我想将其保存到文件中。但是当我发出:

File.write Marshal.dump(users),"users.txt"

我明白了:

ArgumentError: string contains null byte
from (pry):201:in `write'

我也得到了与JSON和YAML类似的结果。如何从字符串中删除空字节?我试过String#scrub但没有帮助。

1 个答案:

答案 0 :(得分:2)

文件名和内容参数的顺序相反。第一个参数必须是名称,第二个参数必须是内容。引发参数错误是因为file names shouldn't contain null bytes

由于您正在处理二进制数据,因此您应该使用IO.binwrite

File.binwrite "users.txt", Marshal.dump(users)