Javaの勉強メモです。
一般的に、アプリケーションには、何かと設定を保存する仕組みが必要です。
アプリケーションのディレクトリに設定ファイルディレクトリを用意しておいて、そこにファイル作っちゃった方が手軽のような気もしますが、それだとマルチユーザーに対応できないのと、アプリのバージョンアップ時に、設定ファイルを残したまま入れ替えてもらわないといけないということになります。
Javaの場合、各プラットフォームに適した形でアプリケーションの設定を保存する、 Java Preferences APIというのがあるようです。
OS XのJavaでも一応サポートされているようですが、com.apple.java.util.prefs?
よくわからなかったので、こちらを参考にさせていただき、以下のテストプログラムを書いて試してみました。
一般的に、アプリケーションには、何かと設定を保存する仕組みが必要です。
アプリケーションのディレクトリに設定ファイルディレクトリを用意しておいて、そこにファイル作っちゃった方が手軽のような気もしますが、それだとマルチユーザーに対応できないのと、アプリのバージョンアップ時に、設定ファイルを残したまま入れ替えてもらわないといけないということになります。
Javaの場合、各プラットフォームに適した形でアプリケーションの設定を保存する、 Java Preferences APIというのがあるようです。
OS XのJavaでも一応サポートされているようですが、com.apple.java.util.prefs?
よくわからなかったので、こちらを参考にさせていただき、以下のテストプログラムを書いて試してみました。
public class Test2 {
private Preferences prefs;
private static final String KEY = "TEST2";
public Test2() {
prefs = Preferences.userNodeForPackage(this.getClass());
}
public void save(String name){
System.out.println("Save the name: " + name);
prefs.put(KEY, name);
try {
prefs.flush();
} catch (BackingStoreException e) {
e.printStackTrace();
System.exit(1);
}
}
public static void main(String[] args) {
Test2 t2 = new Test2();
t2.save("hoge2");
}
}
すると、ユーザーのホームディレクトリ/Library/Preferences の中に、com.apple.java.util.prefs.plist というファイルが出来ていて、中身は以下のようになっていました。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>/</key>
<dict>
<key><unnamed>/</key>
<dict>
<key>TEST2</key>
<string>hoge2</string>
</dict>
<key>children</key>
<array/>
<key>java/</key>
<dict>
<key>awt/</key>
<dict>
<key>im/</key>
<dict/>
</dict>
</dict>
<key>keys</key>
<dict/>
</dict>
</dict>
</plist>
(追記)
ソースに jp.soin.test2 というパッケージ名を付けたら、以下のようにして jp.soin.test2.plist という一つのファイルに書かれました。パッケージにしないときだけ、上記のファイルに書かれるっぽいです。なるほど。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>/jp/soin/test2/</key> <dict> <key>TEST2</key> <string>hoge2</string> </dict> </dict> </plist>
