2.4. ファイルの読み出し


今回はファイルの読み出しを学びましょう。

ファイルを読み出すときには
1.読み出し用にファイルを開き(変数に連結する)、
2.ファイルの中身を読み出し、
3.ファイルを閉じる
という手順が必要になります。
それではプログラムを見てみましょう。

今回はデータ部分とプログラム部分に別れているので注意しましょう。

-- データ 始まり -- data241.log

hello world

-- データ 終わり --

-- プログラム 始まり -- test241.cgi

#!/usr/local/bin/ruby

print "Content-type: text/html\n\n"



FILENAME = "data241.log"

log = ""



fh = open(FILENAME)

fh.each{|l|

 log += l

}

fh.close



print "<html><body>log = #{log}</body></html>"

-- プログラム 終わり --

まずtest241.cgiでは1行目、2行目は決り文句です。
4行目はFILENAMEに読みこむファイルの名前「data241.log」を入れています。
プログラムではこのようにファイル名などは定数に入れておき、
もし読みこむファイル名が変わった場合なども変更が楽になるようにしておきます。
小文字だと変数(プログラム中で変更可能)、大文字だと定数(プログラム中で変更不可)となります。
5行目でlogの変数を定義しています。rubyで変数の定義は何らかの代入すると行われます。

7行目から11行目が今回のテーマのファイルの読み込みです。
まず7行目ではファイルのオープンを行いfhに連結しています。
8行目から10行目でループを行っています。
fhを1行ずつ評価します。(fh.each{)
毎行lにファイルの内容を代入して(|l|)
それをlogに追加しています。(log += l)

なおこの部分は

for l in fh{

 log += l

}

と書きかえる事ができます。
他の言語をやっていた人はこの方が馴染みにある人もいるでしょう。(私はfor文の方がなんとなく好きです。)

13行目で読み出した変数logを表示します。

次にdata241.logの内容を「good bye world」に書き換えてアップしてから、test241.cgiを表示して下さい。
「hello world」だった部分が「good bye world」にかわりましたね。

なお、もしこのファイル名が存在しなかった場合にはプログラムはうまく作動しない為に
Webの表示は「ドキュメントがありません」になってしまいます。
注意して下さい。
もしなかった場合のエラー処理などはそのうちに行いたいと思います。

あと定数というのは誤解の無い様にいっておきますと決して変更できない変数ではないです。
[ruby-list:13501]辺りにそのような話題があったので気になる人はそちらも参照して下さい。



今回始めて使った命令など

| | メニュー戻る | |

LinkExchange Japan
LinkExchange Japan Member