Java 判断操作系统类型(适用于各种操作系统)详解编程语言

最近一段时间写一个授权的程序,需要获取很多信息来保证程序不能随意复制使用,必须经过授权才可以。

为了限制用户使用的操作系统,必须有统一的方法来获取才可以。

在JAVA中,通过System.getProperty(“os.name”)来获取,通过参考:http://lopica.sourceforge.net/os.html 来实现各操作系统的判断。

针对windows系统,这里不具体判断是那个版本,如果有需要,可以在判断出windows之后,继续判断,判断需要考虑java的版本,版本不同,结果也不一样。

下面上代码:

1、枚举类型:EPlatform

/** 
 * 平台 
 * @author isea533 
 */ 
public enum EPlatform { 
	Any("any"), 
	Linux("Linux"), 
	Mac_OS("Mac OS"), 
	Mac_OS_X("Mac OS X"), 
	Windows("Windows"), 
	OS2("OS/2"), 
	Solaris("Solaris"), 
	SunOS("SunOS"), 
	MPEiX("MPE/iX"), 
	HP_UX("HP-UX"), 
	AIX("AIX"), 
	OS390("OS/390"), 
	FreeBSD("FreeBSD"), 
	Irix("Irix"), 
	Digital_Unix("Digital Unix"), 
	NetWare_411("NetWare"), 
	OSF1("OSF1"), 
	OpenVMS("OpenVMS"), 
	Others("Others"); 
	 
	private EPlatform(String desc){ 
		this.description = desc; 
	} 
	 
	public String toString(){ 
		return description; 
	} 
	 
	private String description; 
}

2、操作系统类:OSinfo

/** 
 * 操作系统类: 
 * 获取System.getProperty("os.name")对应的操作系统 
 * @author isea533 
 */ 
public class OSinfo { 
	 
	private static String OS = System.getProperty("os.name").toLowerCase(); 
	 
	private static OSinfo _instance = new OSinfo(); 
	 
	private EPlatform platform; 
	 
	private OSinfo(){} 
	 
	public static boolean isLinux(){ 
		return OS.indexOf("linux")>=0; 
	} 
	 
	public static boolean isMacOS(){ 
		return OS.indexOf("mac")>=0&&OS.indexOf("os")>0&&OS.indexOf("x")<0; 
	} 
	 
	public static boolean isMacOSX(){ 
		return OS.indexOf("mac")>=0&&OS.indexOf("os")>0&&OS.indexOf("x")>0; 
	} 
	 
	public static boolean isWindows(){ 
		return OS.indexOf("windows")>=0; 
	} 
	 
	public static boolean isOS2(){ 
		return OS.indexOf("os/2")>=0; 
	} 
	 
	public static boolean isSolaris(){ 
		return OS.indexOf("solaris")>=0; 
	} 
	 
	public static boolean isSunOS(){ 
		return OS.indexOf("sunos")>=0; 
	} 
	 
	public static boolean isMPEiX(){ 
		return OS.indexOf("mpe/ix")>=0; 
	} 
	 
	public static boolean isHPUX(){ 
		return OS.indexOf("hp-ux")>=0; 
	} 
	 
	public static boolean isAix(){ 
		return OS.indexOf("aix")>=0; 
	} 
	 
	public static boolean isOS390(){ 
		return OS.indexOf("os/390")>=0; 
	} 
	 
	public static boolean isFreeBSD(){ 
		return OS.indexOf("freebsd")>=0; 
	} 
	 
	public static boolean isIrix(){ 
		return OS.indexOf("irix")>=0; 
	} 
	 
	public static boolean isDigitalUnix(){ 
		return OS.indexOf("digital")>=0&&OS.indexOf("unix")>0; 
	} 
	 
	public static boolean isNetWare(){ 
		return OS.indexOf("netware")>=0; 
	} 
	 
	public static boolean isOSF1(){ 
		return OS.indexOf("osf1")>=0; 
	} 
	 
	public static boolean isOpenVMS(){ 
		return OS.indexOf("openvms")>=0; 
	} 
	 
	/** 
	 * 获取操作系统名字 
	 * @return 操作系统名 
	 */ 
	public static EPlatform getOSname(){ 
		if(isAix()){ 
			_instance.platform = EPlatform.AIX; 
		}else if (isDigitalUnix()) { 
			_instance.platform = EPlatform.Digital_Unix; 
		}else if (isFreeBSD()) { 
			_instance.platform = EPlatform.FreeBSD; 
		}else if (isHPUX()) { 
			_instance.platform = EPlatform.HP_UX; 
		}else if (isIrix()) { 
			_instance.platform = EPlatform.Irix; 
		}else if (isLinux()) { 
			_instance.platform = EPlatform.Linux; 
		}else if (isMacOS()) { 
			_instance.platform = EPlatform.Mac_OS; 
		}else if (isMacOSX()) { 
			_instance.platform = EPlatform.Mac_OS_X; 
		}else if (isMPEiX()) { 
			_instance.platform = EPlatform.MPEiX; 
		}else if (isNetWare()) { 
			_instance.platform = EPlatform.NetWare_411; 
		}else if (isOpenVMS()) { 
			_instance.platform = EPlatform.OpenVMS; 
		}else if (isOS2()) { 
			_instance.platform = EPlatform.OS2; 
		}else if (isOS390()) { 
			_instance.platform = EPlatform.OS390; 
		}else if (isOSF1()) { 
			_instance.platform = EPlatform.OSF1; 
		}else if (isSolaris()) { 
			_instance.platform = EPlatform.Solaris; 
		}else if (isSunOS()) { 
			_instance.platform = EPlatform.SunOS; 
		}else if (isWindows()) { 
			_instance.platform = EPlatform.Windows; 
		}else{ 
			_instance.platform = EPlatform.Others; 
		} 
		return _instance.platform; 
	} 
	/** 
	 * @param args 
	 */ 
	public static void main(String[] args) { 
		System.out.println(OSinfo.getOSname()); 
	} 
 
}

如果结果错误,你可以使用下面的代码获取你的操作系统信息:

class WhatOS  
{ 
  public static void main( String args[] )  
  { 
    System.out.println( System.getProperty("os.name") );//这个方法可以直接输出操作系统名称。 
    System.out.println( System.getProperty("os.version") ); 
    System.out.println( System.getProperty("os.arch") ); 
  } 
}

原帖 :http://blog.csdn.net/isea533/article/details/8449919

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/10622.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论