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

简介: 最近一段时间写一个授权的程序,需要获取很多信息来保证程序不能随意复制使用,必须经过授权才可以。为了限制用户使用的操作系统,必须有统一的方法来获取才可以。在JAVA中,通过System.getProperty("os.name")来获取,通过参考:http://lopica.sourceforge.net/os.html 来实现各操作系统的判断。针对windows系统,这里不具体判断

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


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


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


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


下面上代码:

1.枚举类型:EPlatform

  1. /** 
  2.  * 平台 
  3.  * @author isea533 
  4.  */  
  5. public enum EPlatform {  
  6.     Any("any"),  
  7.     Linux("Linux"),  
  8.     Mac_OS("Mac OS"),  
  9.     Mac_OS_X("Mac OS X"),  
  10.     Windows("Windows"),  
  11.     OS2("OS/2"),  
  12.     Solaris("Solaris"),  
  13.     SunOS("SunOS"),  
  14.     MPEiX("MPE/iX"),  
  15.     HP_UX("HP-UX"),  
  16.     AIX("AIX"),  
  17.     OS390("OS/390"),  
  18.     FreeBSD("FreeBSD"),  
  19.     Irix("Irix"),  
  20.     Digital_Unix("Digital Unix"),  
  21.     NetWare_411("NetWare"),  
  22.     OSF1("OSF1"),  
  23.     OpenVMS("OpenVMS"),  
  24.     Others("Others");  
  25.       
  26.     private EPlatform(String desc){  
  27.         this.description = desc;  
  28.     }  
  29.       
  30.     public String toString(){  
  31.         return description;  
  32.     }  
  33.       
  34.     private String description;  
  35. }  
/**
 * 平台
 * @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

  1. /** 
  2.  * 操作系统类: 
  3.  * 获取System.getProperty("os.name")对应的操作系统 
  4.  * @author isea533 
  5.  */  
  6. public class OSinfo {  
  7.       
  8.     private static String OS = System.getProperty("os.name").toLowerCase();  
  9.       
  10.     private static OSinfo _instance = new OSinfo();  
  11.       
  12.     private EPlatform platform;  
  13.       
  14.     private OSinfo(){}  
  15.       
  16.     public static boolean isLinux(){  
  17.         return OS.indexOf("linux")>=0;  
  18.     }  
  19.       
  20.     public static boolean isMacOS(){  
  21.         return OS.indexOf("mac")>=0&&OS.indexOf("os")>0&&OS.indexOf("x")<0;  
  22.     }  
  23.       
  24.     public static boolean isMacOSX(){  
  25.         return OS.indexOf("mac")>=0&&OS.indexOf("os")>0&&OS.indexOf("x")>0;  
  26.     }  
  27.       
  28.     public static boolean isWindows(){  
  29.         return OS.indexOf("windows")>=0;  
  30.     }  
  31.       
  32.     public static boolean isOS2(){  
  33.         return OS.indexOf("os/2")>=0;  
  34.     }  
  35.       
  36.     public static boolean isSolaris(){  
  37.         return OS.indexOf("solaris")>=0;  
  38.     }  
  39.       
  40.     public static boolean isSunOS(){  
  41.         return OS.indexOf("sunos")>=0;  
  42.     }  
  43.       
  44.     public static boolean isMPEiX(){  
  45.         return OS.indexOf("mpe/ix")>=0;  
  46.     }  
  47.       
  48.     public static boolean isHPUX(){  
  49.         return OS.indexOf("hp-ux")>=0;  
  50.     }  
  51.       
  52.     public static boolean isAix(){  
  53.         return OS.indexOf("aix")>=0;  
  54.     }  
  55.       
  56.     public static boolean isOS390(){  
  57.         return OS.indexOf("os/390")>=0;  
  58.     }  
  59.       
  60.     public static boolean isFreeBSD(){  
  61.         return OS.indexOf("freebsd")>=0;  
  62.     }  
  63.       
  64.     public static boolean isIrix(){  
  65.         return OS.indexOf("irix")>=0;  
  66.     }  
  67.       
  68.     public static boolean isDigitalUnix(){  
  69.         return OS.indexOf("digital")>=0&&OS.indexOf("unix")>0;  
  70.     }  
  71.       
  72.     public static boolean isNetWare(){  
  73.         return OS.indexOf("netware")>=0;  
  74.     }  
  75.       
  76.     public static boolean isOSF1(){  
  77.         return OS.indexOf("osf1")>=0;  
  78.     }  
  79.       
  80.     public static boolean isOpenVMS(){  
  81.         return OS.indexOf("openvms")>=0;  
  82.     }  
  83.       
  84.     /** 
  85.      * 获取操作系统名字 
  86.      * @return 操作系统名 
  87.      */  
  88.     public static EPlatform getOSname(){  
  89.         if(isAix()){  
  90.             _instance.platform = EPlatform.AIX;  
  91.         }else if (isDigitalUnix()) {  
  92.             _instance.platform = EPlatform.Digital_Unix;  
  93.         }else if (isFreeBSD()) {  
  94.             _instance.platform = EPlatform.FreeBSD;  
  95.         }else if (isHPUX()) {  
  96.             _instance.platform = EPlatform.HP_UX;  
  97.         }else if (isIrix()) {  
  98.             _instance.platform = EPlatform.Irix;  
  99.         }else if (isLinux()) {  
  100.             _instance.platform = EPlatform.Linux;  
  101.         }else if (isMacOS()) {  
  102.             _instance.platform = EPlatform.Mac_OS;  
  103.         }else if (isMacOSX()) {  
  104.             _instance.platform = EPlatform.Mac_OS_X;  
  105.         }else if (isMPEiX()) {  
  106.             _instance.platform = EPlatform.MPEiX;  
  107.         }else if (isNetWare()) {  
  108.             _instance.platform = EPlatform.NetWare_411;  
  109.         }else if (isOpenVMS()) {  
  110.             _instance.platform = EPlatform.OpenVMS;  
  111.         }else if (isOS2()) {  
  112.             _instance.platform = EPlatform.OS2;  
  113.         }else if (isOS390()) {  
  114.             _instance.platform = EPlatform.OS390;  
  115.         }else if (isOSF1()) {  
  116.             _instance.platform = EPlatform.OSF1;  
  117.         }else if (isSolaris()) {  
  118.             _instance.platform = EPlatform.Solaris;  
  119.         }else if (isSunOS()) {  
  120.             _instance.platform = EPlatform.SunOS;  
  121.         }else if (isWindows()) {  
  122.             _instance.platform = EPlatform.Windows;  
  123.         }else{  
  124.             _instance.platform = EPlatform.Others;  
  125.         }  
  126.         return _instance.platform;  
  127.     }  
  128.     /** 
  129.      * @param args 
  130.      */  
  131.     public static void main(String[] args) {  
  132.         System.out.println(OSinfo.getOSname());  
  133.     }  
  134.   
  135. }  
/**
 * 操作系统类:
 * 获取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 ,如果大家使用别的操作系统,希望能把操作系统和结果在这里留言写下来。


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

  1. class WhatOS   
  2. {  
  3.   public static void main( String args[] )   
  4.   {  
  5.     System.out.println( System.getProperty("os.name") );  
  6.     System.out.println( System.getProperty("os.version") );  
  7.     System.out.println( System.getProperty("os.arch") );  
  8.   }  
  9. }  
目录
相关文章
|
2月前
|
安全 Java 编译器
Java类型提升与类型转换详解
本文详解Java中的类型提升与类型转换机制,涵盖类型提升规则、自动类型转换(隐式转换)和强制类型转换(显式转换)的使用场景与注意事项。内容包括类型提升在表达式运算中的作用、自动转换的类型兼容性规则,以及强制转换可能引发的数据丢失和运行时错误。同时提供多个代码示例,帮助理解byte、short、char等类型在运算时的自动提升行为,以及浮点数和整型之间的转换技巧。最后总结了类型转换的最佳实践,如避免不必要的转换、使用显式转换提高可读性、金融计算中使用BigDecimal等,帮助开发者写出更安全、高效的Java代码。
146 0
|
2月前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
307 120
|
2月前
|
Java 测试技术
Java浮点类型详解:使用与区别
Java中的浮点类型主要包括float和double,它们在内存占用、精度范围和使用场景上有显著差异。float占用4字节,提供约6-7位有效数字;double占用8字节,提供约15-16位有效数字。float适合内存敏感或精度要求不高的场景,而double精度更高,是Java默认的浮点类型,推荐在大多数情况下使用。两者都存在精度限制,不能用于需要精确计算的金融领域。比较浮点数时应使用误差范围或BigDecimal类。科学计算和工程计算通常使用double,而金融计算应使用BigDecimal。
987 102
|
14天前
|
Java 开发者
Java 函数式编程全解析:静态方法引用、实例方法引用、特定类型方法引用与构造器引用实战教程
本文介绍Java 8函数式编程中的四种方法引用:静态、实例、特定类型及构造器引用,通过简洁示例演示其用法,帮助开发者提升代码可读性与简洁性。
|
2月前
|
安全 算法 Java
Java泛型编程:类型安全与擦除机制
Java泛型详解:从基础语法到类型擦除机制,深入解析通配符与PECS原则,探讨运行时类型获取技巧及最佳实践,助你掌握泛型精髓,写出更安全、灵活的代码。
|
7月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
196 15
|
7月前
|
Java
课时11:Java数据类型划分(浮点类型)
课时11介绍了Java中的浮点数据类型。主要内容包括:1. 定义小数,默认使用Double类型;2. 定义Float变量,需在数值后加&quot;F&quot;或&quot;f&quot;进行强制转换;3. 观察不同类型计算结果,如Int型除法会丢失精度,需至少包含一个Double或Float类型以确保准确性。总结指出,在复杂计算中推荐使用Double类型以避免精度损失。
155 5
|
6月前
|
Java
java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
129 0
|
7月前
|
Java
课时10:Java数据类型划分(整型类型)
本文主要围绕Java中整型数据展开,详细讲解整型变量、常量的概念,整型数据运算规则,包括数据溢出问题及解决方法,数据类型转换(自动转换与强制转换)的原理和注意事项,同时介绍了整型数据默认值的相关知识,以及byte数据类型与int数据类型的关系和使用场景,帮助读者全面掌握Java整型数据的相关内容。
186 4
|
7月前
|
存储 Java 编译器
Java泛型类型擦除以及类型擦除带来的问题
本文主要讲解Java中的泛型擦除机制及其引发的问题与解决方法。泛型擦除是指编译期间,Java会将所有泛型信息替换为原始类型,并用限定类型替代类型变量。通过代码示例展示了泛型擦除后原始类型的保留、反射对泛型的破坏以及多态冲突等问题。同时分析了泛型类型不能是基本数据类型、静态方法中无法使用泛型参数等限制,并探讨了解决方案。这些内容对于理解Java泛型的工作原理和避免相关问题具有重要意义。
354 0

推荐镜像

更多