主なメソッド
1) ResourceBundle.getBundle("【propertiesファイル】") → propertiesファイルのインスタンスを取得 2) getString("【キー名】") → キーに従ったバリュー値の取得 3) containsKey("【キー名】") → そのキーがあるかどうか
サンプル
SampleClass.java
import java.util.Locale; import java.util.MissingResourceException; import java.util.ResourceBundle; public class SampleClass { public static void main(String[] args) { try { ResourceBundle defaultBundle = ResourceBundle.getBundle("demo.sampleproperties.sample"); String value = defaultBundle.getString("sample.key1"); System.out.println("デフォルト=" + value); ResourceBundle japanBundle = ResourceBundle.getBundle("demo.sampleproperties.sample", Locale.JAPAN); value = japanBundle.getString("sample.key1"); System.out.println("日本語=" + value); ResourceBundle englishBundle = ResourceBundle.getBundle("demo.sampleproperties.sample", Locale.ENGLISH); value = englishBundle.getString("sample.key1"); System.out.println("英語=" + value); if (englishBundle.containsKey("sample.key1")) { System.out.println("Exists key"); } else { System.out.println("No key..."); } if (englishBundle.containsKey("sample.key2")) { System.out.println("Exists key"); } else { System.out.println("No key..."); } } catch (MissingResourceException ex) { System.out.println("MissingResourceException : " + ex.getMessage()); } catch (Exception ex) { System.out.println("Exception : " + ex.getMessage()); } finally { } } }
propertiesファイル
demo.sampleproperties.sample.properties
demo/sampleproperties/sample.propertiesHello
demo.sampleproperties,sample_jp.properties
demo/sampleproperties/sample_jp.propertiessample.key1=\u3053\u3093\u306b\u3061\u308f
demo.sampleproperties,sample_en.properties
demo/sampleproperties/sample_en.propertiesHello!!
出力結果
デフォルト=Hello 日本語=Hello 英語=Hello!! Exists key No key...
補足
getString()の動作について
* propertiesファイルにキーがない場合 : 例外「MissingResourceException」が発生する * propertiesファイルにキーはあるが空の場合 : 空文字""が渡ってくる
トラブルシューティング
ResourceBundle.getBundleで、例外「MissingResourceException」が発生する
解決方法
* 国際化に拘らなければ、以下のような方法で直接ファイルを指定することもできるFile file = new File("./demo.sampleproperties.sample.properties"); Stream stream = new FileInputStream(file); ResourceBundle defaultBundle = ResourceBundle.getBundle(stream);
参考文献
http://www.yamarou.toypark.in/javanawake/029.htmlhttp://www.atmarkit.co.jp/ait/articles/0705/02/news058_3.html