イントロダクション
前回までに以下のような事をやってきました。
- Java Mid Basic 〜Lv1Javaの基本を理解する(ゲームループ付き)〜
- Java Mid Basic 〜Lv2_Javaの基本(コードの書き方)ゲームループ付き〜
- Java Mid Basic 〜Lv2_1_Javaの基本(四則計算)ゲームループ付き〜
- [Java Mid Basic 〜Lv2_2_Javaの基本(リファクタリング)ゲームループ付き〜]()
- Java Mid Basic 〜Lv2_3_Javaの基本(リファクタリング実践)ゲームループ付き〜
- Java Mid Basic 〜Lv2_4_Javaの基本(Dirコマンドを作る)ゲームループ付き〜
- Java Mid Basic 〜Lv2_5_Javaの基本(コマンド履歴を作る)ゲームループ付き〜
<各項目の概要と目的>
- ハローワールドを行い、コードを書いて動かす:これによりメインメソッドの存在とコンソールへの出力方法を知ります。
- 動かしてみたので、その内容を理解します。
- とりあえずのレベルで内容を理解したので、実際にコードを書いて動かします。自分でコードを考えて実装→起動を行うとプログラミングの面白みも見えてくるかと思います。
- 書いたコードをレベルアップします。今後この「リファクタリング」はどのレベルになってもついてきます。レベルが高ければ高いほど難易度も上がっていきます。
- 理論的なことをやったのであとは実践です。これも「どのように整理してやれば「拡張性、保守性、パフォーマンス」の面で良いものができるか考えるのである意味「永遠のテーマ」です。(笑)
- 今度は、入力した文字によっていろんな処理を実装できるようにプログラムを改造していきます。サンプルとして「Dirコマンド」のようなカレントディレクトリ(現在いるフォルダ)のファイル一覧を取得する処理を実装しました。
- javaに初めからついているクラス「List」を使用してコマンド履歴を出力するプログラムを作成します。ここではjava.utilパッケージについて記載しています、今後はこのパッケージにあるクラスを何個か使用します。
プロパティファイル
プロパティファイルを使用するのもjava.utilパッケージにあるクラスを使用します。「プロパティファイル」とは拡張子がproperiesのファイルを指します。「*.properties」
このファイルはキーと値がセットになっています。具体的には下のような感じです。
ads="グーグルアドセンス" win="ウィンドウズ" mac="マッキントッシュ"
このようなファイルを作成し、これを読み込んでプログラム中で使用します。
今回の使い方は「コマンドをキーにして値を表示する」というような形でやろうと思います。
OUT: グーグルアドセンス
設計
前提として、前回までのコードに追加修正を加える形で実装します。
- コンストラクタでプロパティファイルを読み込みます。
- プロパティファイルにあるキー(コマンド)を入力した時はプロパティファイルの値を表示
- それ以外のコマンド(キー)は前回までと同じ動き
つまり
プロパティフィルにあるキーが存在すればそれを出力して、それ以外はいままで通りということです。
実装
今回のポイントはプロパティファイルを読み込むところです。
プログラムが動き始めたら即ファイルを読み込んでおきたいので、コンストラクタで読み込むように実装します。
そして、Propertiesクラスはフィールド変数として使用します。
ちなみにファイルまでのパスを指定しますが、ビルドパスを基準にパスを記載するのでちょいと注意が必要です。
resources/test.properties>resources/test.properties
を読み込みたい場合は「ビルドパスがresourcesにつながっていることを確認します。
そしてコードは下のような感じです。
/** コンストラクタ */ public Lv2_6_Properties() { commandList = new ArrayList(); prop = new Properties(); try { // resources/ prop.load(getClass().getResourceAsStream("test.properties")); } catch (IOException e) { e.printStackTrace(); // エラーコード-1をセットしてプログラム終了 System.exit(-1); } }
ポイントの部分はprop.load(getClass().getResourceAsStream("test.properties"));
の部分です、ここではPropertiesクラスのload()
メソッドを使用してInputStreamからプロパティファイルを読み込みます。
getClass().getResourceAsStream("パス")で対象ファイルのInputStreamを取得します。
具体的にはビルドパスにつながっているディレクトリがルート「/」になるので「/test.properties」が対象のパスになりますが、環境によりルートが違う場合があります。
作成したコードはこちらです。
そして、実行結果です。