在 Java 中查找用户主目录的最佳方法是什么?

新手上路,请多包涵

在 Java 中查找用户主目录的最佳方法是什么?

困难在于解决方案应该是跨平台的;它应该适用于 Windows 2000、XP、Vista、OS X、Linux 和其他 Unix 变体。我正在寻找可以为所有平台完成此操作的代码片段,以及检测平台的方法。

根据 Java 错误 4787931 ,系统属性 user.home 在 Windows XP 上无法正常工作,因此使用此系统属性不是一个可接受的解决方案,因为它不是跨平台的。

原文由 Bruno Ranschaert 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 727
2 个回答

您引用的错误(错误 4787391)已在 Java 8 中修复。即使您使用的是旧版本的 Java, System.getProperty("user.home") 方法可能仍然是最好的。 user.home 方法似乎适用于大量情况。 Windows 上的 100% 防弹解决方案很难,因为 Windows 对主目录的含义有一个不断变化的概念。

如果 user.home 对你来说不够好,我建议选择 home directory 的定义 for windows 并使用它,使用 System.getenv(String) 获取适当的环境变量

原文由 DJClayworth 发布,翻译遵循 CC BY-SA 3.0 许可协议

实际上,对于 Java 8,正确的方法是使用:

 System.getProperty("user.home");

错误 JDK-6519127 已得到修复, 发行说明 的“JDK 8 和 JDK 7 之间的不兼容性”部分指出:

区域:核心库/java.lang

概要

用于在 Windows 上确定用户主目录的步骤已更改为遵循 Microsoft 推荐的方法。在旧版本的 Windows 或注册表设置或环境变量设置为其他目录的情况下,可能会观察到此更改。不相容的性质

behavioral RFE

6519127

尽管问题很老,但我还是将其留作将来参考。

原文由 Paulo Fidalgo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题