Java 判断操作系统类型(适用于各种操作系统)

Posted isea533

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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());
	


我使用的Windows 7 识别出来:Windows ,如果大家使用别的操作系统,希望能把操作系统和结果在这里留言写下来。


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

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") );
  




以上是关于Java 判断操作系统类型(适用于各种操作系统)的主要内容,如果未能解决你的问题,请参考以下文章

java8新特性→Optional:适用于层级处理非空判断(依赖上一步操作)的场合

德特威勒适用于哪些场所呢

5款适用于各种操作系统的最佳ISO安装软件

[转]Java虚拟机是如何判断变量类型的

配置163Yum源自动判断你的系统是Centos版本(适用于5.x或6.x)

Python基础知识大全(适用于全面复习Python语法知识)