File.open("foo.txt", "r") do |io| while ! io.eof? print io.read(1) io.seek(1, IO::SEEK_END) # io.seek(1, IO::SEEK_CUR) # io.seek(1) io.seek(1, IO::SEEK_SET) # デフォルトなので上のなにもオプションがないのと同じ end end
File.open("foo.txt", "r") do |io| puts io.gets # getsは1行読む。 puts io.read # readは残りの内容を読む。※getsでカーソルが少し進んでるのでその残り。 io.rewind # 読み込みを先頭に戻す。 ※先頭というのは行頭ではなく本当にファイルの先頭 lines = io.readlines # テキストの各行がそれぞれの入った配列にする end
openとFile.openとの違い
→ openはパイプOK
readは今の位置から全て読める。
readlineは今の行を読む→例外有り
readlinesは各行を読んで配列に
・同じとか似たものたち
mapとcollect
detectとfind
find_allとselect
URL: http://ref.xaio.jp/ruby/classes/enumerable/find_all
getsとreadlineの差
→ readlineは例外有り、getsは例外なしで、もう読めないときにnilを返す
・delete_ifとreject!
h = {:foo => 1, :bar => 2 } h.delete_if {|key, value| true} p h
h = {:foo => 1, :bar => 2 } h.reject! {|key, value| true} p h