utilじゃなかったか。

とりあえずキーイベントに関してはVent君に任せるとして(自分でもやるけど
私は自分でも一度も試したことのないテキストファイルの読み取りをやってみました。
目標は、数行に渡って定義されているテキストファイルの中身を1行ずつ読み取って、
コンソールに表示させる。
これができればタイピングゲームの2本柱のうち1本がほぼ完成することになります。





・・・まぁ最終的な目標は、読み取る行をランダム生成してっていう感じですけどね。





これはきっと何とかなるでしょう。
んで、予備知識も何もないので、とりあえずグーグル先生に質問してみました。
ファイルの読み込み・書き込みはjava.ioだった罠。
まぁよく考えれば当然っちゃぁ当然なんですけどね。





ファイルの読み込み:java.io.FileReader
1行ずつ読み込む:java.io.BufferedReader




というクラスを使うらしいです。
注意点としては、この2つのクラスは例外としてIOExceptionをthrowすること。
つまり、ちゃんとcatchしてやらないといけないわけですね。
例外処理が出てきやがったよ・・・・。
あともう一つ。これはまぁ、どうでもいい気もしますが、
BufferedReaderクラスはテキストファイルを1行ずつ読み込むという機能ではなくて、
まとめて読む(バッファリングというらしい)ことで
読み込みのパフォーマンスを上げるクラスであるらしい。
このクラスの中に入っているReadLine()メソッドが
「改行ごとにバッファリングして読み込み→読み込む行番号を1つ増やす」
という機能を持っているのでそれを使う、とのこと。







サンプルプログラムに沿って、実際にコーディングしてみた。








意外と簡単でした(ぉ







ファイルを読み込むときに、どうも相対パスを使うと読み込んでくれない(?)ので、
ちょっと悩んだ挙句、絶対パスで指定してやって解決。
実際に相対パスが使えないかどうかは分かりません。
最終的には1行ずつ読み取って表示できるようになりましたよ。






今のところコンソール上では、「前の行も表示されている状態」ですが、
これはGUIを実装したときにrepaintで再描画してやるか何かすれば何とかなるでしょう。
・・・・・・なるのかな?