在Java应用程序中存储首选项的位置?

f4l*_*lco 1 java settings cross-platform jar preferences

我只需要一个解决方案来检索存储满足以下需求的桌面应用程序设置(例如sqlite数据库)的路径:

  • 跨平台
  • 从jar和"正常"调用工作

我花了很多时间谷歌搜索和试验通过X.class.getProtectionDomain().getCodeSource().getLocation()java.util.pref.Preferences 类获取代码库路径,但返回值有时会产生不同的结果,返回null或只是"/"作为路径.

"跨平台"很难定义.称为"每个平台的最佳实践"的解决方案并不容易实现.在用户特定数据和共享数据之间做出区分是明智的.

Boz*_*zho 9

java.util.prefs.Preferences是这样做的正确方法.它工作得很好(我在桌面应用程序中使用它没有任何问题).它是跨平台的,没有任何额外的罐子.它还区分用户特定数据和全局数据.或许可以解释一下你的特殊问题(或者问另一个问题)

当然,你也可以使用java.util.Properties,并存储文件System.getProperty("user.dir").