#navi_header|Java| 書く度に忘れてしまうので、まとめてメモ。 * INIファイル風に使えるpropertiesファイルをjava.util.Propertiesでロード Test1.java: #code|java|> import java.io.*; import java.util.*; public class Test1 { public static void main(String args[]) { if (1 > args.length) { System.err.println("args : *.properties"); return; } Properties prop = new Properties(); try { prop.load(new FileInputStream(new File(args[0]))); } catch (IOException e) { e.printStackTrace(); return; } for (Map.Entry e : prop.entrySet()) { System.out.println(e.getKey() + "=" + e.getValue()); } } } ||< foo.ini ## java property file a.b.c=123 #comment foo=aaaaaaaaaaaaaaaaaaaaaaaa 実行: > java Test1 foo.ini a.b.c=123 foo=aaaaaaaaaaaaaaaaaaaaaaaa java.util.Propertiesは Map interfaceを実装してるので、アプリ中ではinterfaceで受けて使い回してもOK。 参考: - @IT:Java TIPS -- Javaプログラムからプロパティファイルを参照する -- http://www.atmarkit.co.jp/fjava/javatips/050jspservlet026.html * ResourceBundleで国際化 with properties ファイル ただのResourceBundleだけだと、リソースバンドルをクラスで作ったり面倒くさい。 メッセージの国際化なら文字列しか扱わないので、PropertyResourceBundleでpropertiesファイルを使って済ませることが出来る。 pack/age/Test1.java: #code|java|> package pack.age; import java.util.*; public class Test1 { public static void main(String args[]) { Locale currentLocale = Locale.getDefault(); System.out.println(currentLocale); ResourceBundle res = PropertyResourceBundle.getBundle( "pack.age.restest"); System.out.println(res.getString("foo")); System.out.println(res.getString("bar")); } } ||< pack/age/restest.properties: foo=English bar=Version pack/age/restest_cp932.properties: foo=日本語 bar=バージョン UNICODEに変換: native2ascii pack\age\restest_cp932.properties pack\age\restest_ja.properties 日本語ロケールで実行: > java -cp . pack.age.Test1 ja_JP 日本語 バージョン 英語ロケールで実行1: > java -Duser.language=en -cp . pack.age.Test1 en_JP English Version 国がJPなのに言語がenって、何か不思議ですね。 英語ロケールで実行2: > java -Duser.language=en -Duser.region=us -cp . pack.age.Test1 en_US English Version 参考: - Setting the Default Locale | Example Depot -- http://www.exampledepot.com/egs/java.util/SetDefLocale.html - How do I change the system locale so I can use my language of choice? -- http://www.java.com/en/download/help/locale.xml #navi_footer|Java|