在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-
發佈留言