我认为你可以安全地假设在任何最近的(由Oracle提供的)JVM中,列表中的所有属性都是可用的。
然而,在这种情况下,null
检查更具防御性,且不会有太大的开销。
我从未见过user.home
为空或默认情况下被错误指定。但是,请记住用户可以使用-Duser.home=...
进行覆盖,因此您不能依赖它指向一个现有路径。
getProperty
方法返回一个字符串,其中包含属性的值。如果该属性不存在,则此版本的getProperty
返回null
。null
值。application.jar -Duser.home=good/luck
)。 - mikuuser.variant
和user.timezone
没有任何值!以下是列出所有键值对的代码:Properties prop = System.getProperties();
Set<Object> set = prop.keySet();
Iterator<Object> itr = set.iterator();
while(itr.hasNext()){
Object obj = itr.next();
String propVal = System.getProperty(obj.toString());
System.out.println(obj.toString()+" = "+propVal);
}
}
关于您提到的user.home
的具体参考,它似乎大多数时候都被定义了。查看这个有趣的帖子,在那里人们发布了不同机器上系统属性的列表。
user.home
包含用户主目录,但未指明其可能包含null
。我毫不怀疑JVM保证它始终被设置。
user.home
是与操作系统相关的,但它很少出错。 - fge~/.mycache
文件;我需要事先显式检查user.home
的存在吗? - mikuFiles.createDirectories()
;如果它失败了,你就知道JVM在欺骗你 ;) - fge