您的位置:首页 > 编程语言 > Java开发

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

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

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

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

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

下面上代码:

1.枚举类型:EPlatform

[java]
view plain
copy

/** 
 * 平台 
 * @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

[java]
view plain
copy

/** 
 * 操作系统类: 
 * 获取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 ,如果大家使用别的操作系统,希望能把操作系统和结果在这里留言写下来。

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

[java]
view plain
copy

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") );  
  }  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: