http://tolstoy.com/samizdat/sysprops.html ==》 給出了許多OS下的具體java.getproperties()的值
http://www.rgagnon.com/javadetails/java-0150.html ==》
I found that, on Windows 2003 server, the property value for "os.name" is actually "windows 2003." So either that has to be added to the bunch of tests or just relax the comparison strings a bit:
else if ( (OS.indexOf("nt") > -1)
|| (OS.indexOf("windows 2000") > -1 )
|| (OS.indexOf("windows 2003") > -1 ) // works but is quite specific to 2003
|| (OS.indexOf("windows xp") > -1) ) {
else if ( (OS.indexOf("nt") > -1)
|| (OS.indexOf("windows 20") > -1 ) // probably is better since no other OS would return "windows" anyway
|| (OS.indexOf("windows xp") > -1) ) {
I started with "windows 200" but thought "what the hell" and made it "windows 20" to lengthen its longivity. You could push it further and use "windows 2," I suppose. The only thing to watch out for is to not overlap with "windows 9."
結(jié)論:
如果可以,盡量使用變量,定義操作系統(tǒng)的類型,然后在不同的操作系統(tǒng)下修改操作系統(tǒng)類型的定義。否則,可能會(huì)隨著操作系統(tǒng)以后的變化,引入新的OS Name(畢竟無(wú)法保證可以對(duì)所有的OS Name進(jìn)行充分的判斷)。