【发布时间】:2010-11-22 04:27:04
【问题描述】:
如果我使用Preference API 存储用户或系统首选项,它们在 Windows 和 Unix 上存储在哪里?
【问题讨论】:
标签: java preferences
如果我使用Preference API 存储用户或系统首选项,它们在 Windows 和 Unix 上存储在哪里?
【问题讨论】:
标签: java preferences
对于 Windows,systemRoot 和 userRoot 分别存储在 HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs 和 HKEY_CURRENT_USER\Software\JavaSoft\Prefs 中。
对于 Unix,systemRoot 和 userRoot 分别存储在 "/etc/.java" 和 "${user.home}/.java/.userPrefs" 中。
注意,对于 Unix,可以通过指定 "java.util.prefs.userRoot" 和 "java.util.prefs.systemRoot" 属性来更改位置 p>
【讨论】:
MacOSXPreferencesFactory 类:i.imgur.com/wWDryFT.png
java.util.prefs.MacOSXPreferencesFactory 类应该在 JDK 1.7 或更高版本中的 rt.jar 中。我没有Mac,所以不能进一步评论。源代码见hg.openjdk.java.net/macosx-port/macosx-port/jdk/file/…。
java.util.prefs 中的所有项目:i.imgur.com/GdpGIVf.png
我必须扩展 n002213fs 的答案,因为在我看来,存储位置是一团糟。 请注意,Windows 将其保存在 Windows Registry 中,而 Unix 将其保存在 prefs.xml-files 中。
HKEY_CURRENT_USER\Software\JavaSoft\Prefs
HKEY_CURRENT_USER\Software\JavaSoft\Prefs
HKEY_CURRENT_USER\Software\Wow6432Node\JavaSoft\Prefs
System.getProperty("java.util.prefs.userRoot") 或 (如果没有设置之前的值) ~/.java/.userPrefs
HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
HKEY_LOCAL_MACHINE\Software\Wow6432Node\JavaSoft\Prefs
System.getProperty("java.util.prefs.systemRoot") 或 (如果没有设置之前的值) System.getProperty("java.home")+"/.systemPrefs"(System.getProperty("java.home")可能是/etc/.java/。你可以检查它带有$JAVA_HOME的终端。)【讨论】:
FileSystemPreferences 始终将 .java/.userPrefs 根添加到配置的路径中。因此,java.util.prefs.userRoot 的等效默认属性设置实际上只是主目录(或您所说的 ~)。