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

2022-03-22 00:00:00 cross-platform home-directory java

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

困难在于解决方案应该是跨平台的;它应该在Windows2000、XP、Vista、OSX、Linux和其他Unix变体上工作。我正在寻找一段可以为所有平台实现这一点的代码,以及一种检测平台的方法。

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


解决方案

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

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

相关文章