首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java Preferences API 實現用戶偏好持久化存儲

     編輯:Java 綜合教學

Preferences 簡介

java.util.prefs.Preferences(JDK 1.4+)提供跨平台的用戶/系統偏好配置存儲機制。適用於保存用戶設置(如窗口大小、最近打開文件、文本框最後值等),不適用於業務應用數據存儲。

存儲機制

  • Windows: 系統註冊表。
  • Linux/macOS: 用戶家目錄下的隱藏文件(如 ~/.java/.userPrefs/)。

開發者無需關心底層實現,API 自動適配平台。

核心 API 用法

import java.util.prefs.Preferences;

public class PreferenceTest {
    private Preferences prefs;

    public void setPreference() {
        // 定義節點,通常使用類全名保證唯一性
        prefs = Preferences.userRoot().node(this.getClass().getName());

        String ID1 = "Test1", ID2 = "Test2", ID3 = "Test3";

        // 讀取並指定默認值
        System.out.println(prefs.getBoolean(ID1, true));          // 默認 true
        System.out.println(prefs.get(ID2, "Hello World"));        // 默認字符串
        System.out.println(prefs.getInt(ID3, 50));                // 默認 50

        // 寫入新值
        prefs.putBoolean(ID1, false);
        prefs.put(ID2, "Hello Europa");
        prefs.putInt(ID3, 45);

        // 刪除某鍵
        prefs.remove(ID1);
    }

    public static void main(String[] args) {
        new PreferenceTest().setPreference();
    }
}

關鍵點總結

  • 節點隔離: 使用 userRoot()(用戶級)或 systemRoot()(系統級)創建節點樹,避免不同應用衝突。
  • 類型安全: 提供 getBoolean/getInt/getLong/getFloat/getDouble/get 等強類型讀取方法。
  • 默認值機制: 所有 getXxx(key, default) 方法在鍵不存在時返回默認值,避免空指針。
  • 異步刷新: 修改後由 JVM 定期刷新到磁盤,亦可調用 flush() 強制同步(可能拋 BackingStoreException)。
  • 導出/導入: 支持 exportNode/exportSubtree 導出 XML,importPreferences 導入,便於配置遷移。

適用場景示例

  • 記住用戶上次窗口尺寸/位置。
  • 保存「最近打開文件」列表。
  • 存儲用戶界面主題偏好(深色/淺色模式)。
  • 記錄向導最後完成步驟,下次啟動恢復進度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved