【问题标题】:Preference API storage偏好 API 存储
【发布时间】:2010-11-22 04:27:04
【问题描述】:

如果我使用Preference API 存储用户或系统首选项,它们在 Windows 和 Unix 上存储在哪里?

【问题讨论】:

    标签: java preferences


    【解决方案1】:

    对于 Windows,systemRoot 和 userRoot 分别存储在 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\PrefsHKEY_CURRENT_USER\Software\JavaSoft\Prefs 中。

    对于 Unix,systemRoot 和 userRoot 分别存储在 "/etc/.java""${user.home}/.java/.userPrefs" 中。

    注意,对于 Unix,可以通过指定 "java.util.prefs.userRoot""java.util.prefs.systemRoot" 属性来更改位置 p>

    【讨论】:

    【解决方案2】:

    我必须扩展 n002213fs 的答案,因为在我看来,存储位置是一团糟。 请注意,Windows 将其保存在 Windows Registry 中,而 Unix 将其保存在 prefs.xml-files 中。

    用户根

    • Windows(32 位):HKEY_CURRENT_USER\Software\JavaSoft\Prefs
    • 带有 JVM(64 位)的 Windows(64 位):HKEY_CURRENT_USER\Software\JavaSoft\Prefs
    • 带有 JVM(32 位)的 Windows(64 位):HKEY_CURRENT_USER\Software\Wow6432Node\JavaSoft\Prefs
    • Unix:System.getProperty("java.util.prefs.userRoot") (如果没有设置之前的值) ~/.java/.userPrefs

    systemRoot

    • Windows(32 位):HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
    • 带有 JVM(64 位)的 Windows(64 位):HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
    • 带有 JVM(32 位)的 Windows(64 位):HKEY_LOCAL_MACHINE\Software\Wow6432Node\JavaSoft\Prefs
    • Unix:System.getProperty("java.util.prefs.systemRoot") (如果没有设置之前的值) System.getProperty("java.home")+"/.systemPrefs"System.getProperty("java.home")可能是/etc/.java/。你可以检查它带有$JAVA_HOME的终端。)

    【讨论】:

    • 对于 Unix,请注意 FileSystemPreferences 始终将 .java/.userPrefs 根添加到配置的路径中。因此,java.util.prefs.userRoot 的等效默认属性设置实际上只是主目录(或您所说的 ~)。
    猜你喜欢
    • 2014-03-01
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多