如何将Ruby数组存储到文件中?

Shu*_*ham 14 ruby

如何将Ruby数组存储到文件中?

Swa*_*and 18

我不确定你想要什么,但是,为了序列化一个数组,将它写入文件并回读,你可以使用:

fruits = %w{mango banana apple guava}
=> ["mango", "banana", "apple", "guava"]
serialized_array = Marshal.dump(fruits)
=> "\004\b[\t\"\nmango\"\vbanana\"\napple\"\nguava"
File.open('/tmp/fruits_file.txt', 'w') {|f| f.write(serialized_array) }
=> 33
# read the file back
fruits = Marshal.load File.read('/tmp/fruits_file.txt')
=> ["mango", "banana", "apple", "guava"]
Run Code Online (Sandbox Code Playgroud)

您可以探索其他替代方案,例如jsonYAML.


gho*_*ppe 7

要将数组转储到标准[a,b,c]格式的文件中:

require 'pp'
$stdout = File.open('path/to/file.txt', 'w')
pp myArray
Run Code Online (Sandbox Code Playgroud)

这可能没有那么有用,也许你可能想要读回来?在这种情况下,你可以使用json.使用rubygems安装gem install json.

require 'rubygems'
require 'json'
$stdout = File.open('path/to/file.txt', 'w')
puts myArray.to_json
Run Code Online (Sandbox Code Playgroud)

读回来:

require 'rubygems'
require 'json'
buffer = File.open('path/to/file.txt', 'r').read
myArray = JSON.parse(buffer)
Run Code Online (Sandbox Code Playgroud)


Jea*_*ean 6

有多种方法可以将阵列转储到磁盘.您需要决定是要以二进制格式还是以文本格式序列化.

对于二进制序列化,您可以查看Marshal

对于文本格式,您可以使用json,yaml,xml(使用rexml,builder,...),...