Java propertiesファイルを使って、設定を外出しにする




Javaでは、お手軽に外部ファイルを利用する場合、「java.util.ResourceBundle」クラスをよく使います。
これを使うと簡単に設定とか定義とかを外部ファイルに定義しておけます。
Windowsアプリを開発していた方は、INIファイル相当だと思っておけばOKです。

サンプル

hoge.propertiesに定義した色から果物に変換する定義を取得。取得した果物を標準出力してみます。

ResouceBundleTest.java

hoge.properties

実行結果

propertiesファイルの書き方

基本的な書き方

基本的な書き方は、こんな感じです。

これをいくつでも書けます。

コメント

コメントを書くときは、行の先頭に「#」をつけます。

ちなみに、行の先頭に「!」をつけても構いませんが、何となく今まで多かったのは「#」派でした。
両方使うと見栄えが悪いので、どちらか1つに統一して使いましょう。

マルチバイト(日本語)を含むpropertiesファイル

なにげなくサンプルでは、日本語を外部ファイルにさらさら書いてますが、これをこのまま使うことはできない場合があります。
何がダメかというと、変な文字が表示されます。俗に言う、「文字化け」する場合があるのです。

これを解消するためには、原則では「native2ascii」コマンドを利用して、ASCII文字に変換したpropertiesファイルを用意することです。
ただし、先に書いたように、必ずしもASCII変換する必要はなく、最近のJavaでは、そのままでもちゃんと読んでくれます。

この件に限りませんが、そもそもJavaのバージョンを上げられるのであれば、上げた方が良いです。
いろいろあって、簡単にバージョンを上げられない方は、変換しましょう。

おまけ

ふつうは、propertiesファイルから値を取得するたびに、このクラスを呼び出すことはしません。
そこまで大量に書く人もいないでしょうし、LRUとかやる必要はないと思いますが、何らかキャッシュしておくべきです。