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

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

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

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

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

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

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"] 

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

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

 require 'pp' $stdout = File.open('path/to/file.txt', 'w') pp myArray 

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

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

回读一下:

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

在Ruby中序列化数据的一些标准选项:

  • 元帅
  • YAML
  • JSON (内置1.9版,各种gem也可用)

(还有其他的,可以说是更好/更快的YAML和JSON实现,但是我正在连接到内置函数。)

在实践中,我似乎经常看到YAML,但这可能并不代表任何真实的东西。

这是一个快速的yaml示例

 config = {"rank" => "Admiral", "name"=>"Akbar", "wallet_value" => 9, "bills" => [5,1,1,2]} open('store.yml', 'w') {|f| YAML.dump(config, f)} loaded = open('store.yml') {|f| YAML.load(f) } p loaded # => {"name"=>"Akbar", "wallet_value"=>9, \ # "bills"=>[5, 1, 1, 2], "rank"=>"Admiral"} 

示例:将text_area写入文件,其中text_area是字符串数组。

File.open('output.txt', 'w') { |f| text_area.each { |line| f << line } }

不要忘记对文件操作进行错误检查:)

Afaik ..文件包含行而不是数组。 读取文件时,数据可以存储在数组或其他数据结构中。 我很想知道是否还有其他办法。