我只需要一个解决方案来检索存储满足以下需求的桌面应用程序设置(例如sqlite数据库)的路径:
我花了很多时间在谷歌搜索并尝试通过X.class.getProtectionDomain().getCodeSource().getLocation()
和java.util.pref.Preferences
获取代码库路径
class,但返回值有时会产生不同的结果,返回null或只是“/”作为路径。
“跨平台”很难定义。称为“每个平台的最佳实践”的解决方案并不容易实现。区分用户特定数据和共享数据是明智之举。
答案 0 :(得分:9)
java.util.prefs.Preferences
是正确的方法。它工作得很好(我在桌面应用程序中使用它没有任何问题)。它是跨平台的,没有任何额外的罐子。它还区分用户特定数据和全局数据。或许可以解释一下你的特殊问题(或提出另一个问题)
当然,您也可以使用java.util.Properties
,并将文件存储在System.getProperty("user.dir")
中。
答案 1 :(得分:0)
System.getProperty("user.dir")
返回大多数现代系统的用户目录路径。