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

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

 

 

 

 

 

来自:  http://blog.csdn.net/isea533/article/details/8449919

 

 

 

 

 

 

 

 

Java 判断操作系统类型(适用于各种操作系统),布布扣,bubuko.com

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

上一篇:AutoMapper之集合和数组映射


下一篇:Spring Transaction