構造体を保存する
fname = 'words.dat' base = "BCDFGHJKLMNPQRSTVWXYZ" (1..rand(5)+10).inject(words=[]) {|w,i| w << (0..rand(10)+5).inject(str="") {|x,i| x << base[rand(base.size)] } } p words #=> "BJXNRN", "KTVRCZFZXJKCQZ", "NLDLHTMHF", "LGZRCSFGGTT", "KHNRNGLVRJJW", "MKDCLNMRHH", "FYCDKFQMMBH", "CPLDXPHQ", "DJDPTGMNLD", "PHKCHCWXDLZNPBX", "LDTPZJCXY"] open( fname,'w') {|f| f.binmode.write( Marshal.dump(words)) } # open( fname,'w').binmode.write( Marshal.dump(words)) # とすると,書き込み終わらないうちに↓で読みこもうとする? words2 = Marshal.load( open(fname).binmode.read()) p words==words2 #=> true
便利.オブジェクトをハッシュに突っ込んだデータを保存させてみたけど,それも一発で保存と読み込みが出来てた.
binmodeはつけなくても読み書きできる場合と,出来ない場合があったので念のために常につけることにする.(追記:openするとき("wb")とかすればよいだけ?)