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

时间:2011-02-21 20:03:49

标签: java jar cross-platform settings preferences

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

  • 跨平台
  • 适用于jar和“普通”调用

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

“跨平台”很难定义。称为“每个平台的最佳实践”的解决方案并不容易实现。区分用户特定数据和共享数据是明智之举。

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:0)

System.getProperty("user.dir")返回大多数现代系统的用户目录路径。