ファイルを読んだり書いたり。

ファイルの読み書きをしてみる。やっとこさ実用的な勉強になって嬉しい。ここのところ、ちょっとだけわかってきたので勉強をしているとドラクエのレベルアップ音が鳴り響くことが多いので楽しい。
スクリプトと同じディレクトリに

hoge
huga
hage

こんな内容のテキストファイルを作成しhoge.txtと保存し、これを読み込んでみる。

open("./hoge.txt", "r") do |file|
  while line = file.gets
    p line.chomp
  end
end

結果。

hoge
huga
hage

||で囲まれたfileにはストリームが格納されるのか、気になるので確かめてみる。

open("./hoge.txt", "r") do |file|
  p file
end

結果。

#<File:./hoge.txt>

Fileクラスのインスタンスということか?とりあえずまだ知らなくても大丈夫だろうから置いておく。
Closeはしなくてもendを抜けると勝手にやってくれるらしい。ちょっと気持ち悪いけど、きっと慣れれば快適なのだろう。あ、C#にあるusingみたいなものか。
続いて書き込んでみる。hoge.txtにhujiと追記。

open("./hoge.txt", "a") do |file|
  file.puts "huji"
end

hoge.txtの中身は。

hoge
huga
hage
huji

となる。
openの第2引数はオプション、各種取り揃えられております、ご主人様。

オプション 機能
r 読み込みモード
r+ 読み書きモード、ファイルを読み込む場合は先頭から読み込む
w 書き込みモード、同名のファイルが存在する場合は0バイトとなる
w+ 読み書きモード、同名のファイルが存在する場合は0バイトとなる
a 追記モード、指定したファイルがなければ新規作成
a+ 読み書きモード、ファイルが存在すれば追記、存在しなければ新規作成


Ruby プログラミング基礎講座

Ruby プログラミング基礎講座