在JAVAFX中,我們可以使用 Preferences 來儲存程式會使用到的設定值。
這些設定值會儲存在登錄檔中:
HKEY_CURRENT_USER\Software\JavaSoft\Prefs
當我們要用的時候,就可以快速地讀取出來。
初始化 Preferences 物件:
//這邊使用一個全域變數物件,方便以下搭配封裝的程式碼使用 //Parameter.class為此class的名稱,用來當作儲存路徑使用 private static final Preferences pref = Preferences.userNodeForPackage(Parameter.class);
儲存一個值進去:
//儲存一個布林值
public static void saveMyBoolean(boolean open){
try{
//參數的名稱
pref.putBoolean("TAG", open);
//確認儲存
pref.flush();
} catch (BackingStoreException e) {
e.printStackTrace();
}
}
取得一個值:
public static boolean getMyBoolean(){
//用TAG抓取剛剛儲存的布林值,後面參數為沒有此TAG時要回傳的預設值
return pref.getBoolean("TAG", false);
}
如果今天想儲存比較複雜的,一個陣列的話:
public static void saveMyArray(float[][] myArray){
try{
//這邊將myArray的二維陣列轉換成JSONArray來儲存
JSONArray jsonArray = new JSONArray(myArray);
//JSONArray轉換成字串即可存進
pref.put("TAG", jsonArray.toString());
pref.flush();
} catch (BackingStoreException e) {
e.printStackTrace();
}
}
取得上面儲存陣列的方式:
public static float[][] getMyArray(){
//載入儲存的資料
String myArray = pref.get("TAG", null);
//有找到儲存的資料才做後續處理
if(myArray != null){
JSONArray jsonArray = new JSONArray(myArray);
//開始重組成原本的二維陣列
List<Object> listArray1 = jsonArray.toList();
float[][] floatArray = new float[listArray1.size()][];
for(int i=0; i<listArray1.size(); i++){
//讀取第二層陣列
JSONArray listArray2 = new JSONArray(listArray1.get(i).toString());
floatArray[i] = new float[listArray2.length()];
for(int j=0; j<listArray2.length(); j++){
floatArray[i][j] = listArray2.optFloat(j);
}
}
return floatArray;
}else{//沒找到就給預設值
return defaultMyArray;
}
}
清除所有儲存的資料:
public static void clearAllSettings(){
try {
if (pref.keys ().length > 0) {
pref.clear ();
}
pref.flush();
} catch (BackingStoreException e) {
e.printStackTrace();
}
}
-END-
發佈留言