File#write/print/putsは引数オブジェクトを文字列とみなしてselfに出力する
File#readはselfから読み込んで文字列オブジェクトとして返す
ので、単にそういうふうに作られたメソッドだからというだけのお話だっていうかマニュアルは慎重に読もうきちんと書いてある

で、配列やHashはよく使われるので、「ファイルに"保存"して"再生"したい」という要望が多い
のでできたのがyamlだ
これは文字列だけが含まれている配列やHashをテキストファイルとして保存して(外部編集してから)読み込むことができる

Rubyのオブジェクトが含まれていて、それをまるっと保存再生したいという場合はpstoreを使う
これはRubyの扱うほぼ全てのオブジェクトをバイナリファイルとして保存して読み込むことができる

あと、RubyではFileオブジェクトのopenはブロックを使うのが普通
File#closeを書くことはまずない

File.open('test.txt','wb'){|f| f.puts(str) }