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

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

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

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

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

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

下面上代码:

1.枚举类型:EPlatform

/**
* 平台
*/
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")对应的操作系统
*/
public class OSinfo {

private static final 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());
}

}


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

public class WhatOS {
public static void main(String args[]) {
System.out.println(System.getProperty("os.name"));//Windows 8.1(不准,我的系统是Windows10)
System.out.println(System.getProperty("os.version"));//6.3
System.out.println(System.getProperty("os.arch"));//amd64
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: