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 判断操作系统类型(适用于各种操作系统)的更多相关文章

  1. Java判断文件类型

    通常,在WEB系统中,上传文件时都需要做文件的类型校验,大致有如下几种方法: 1. 通过后缀名,如exe,jpg,bmp,rar,zip等等. 2. 通过读取文件,获取文件的Content-type来 ...

  2. 利用Javascript判断操作系统的类型实现不同操作系统下的兼容性

    原文地址 http://www.jb51.net/article/33640.htm 在通过Javascript实现客户端和服务端的交互时,有时候需要对操作系统进行判断,以便实现不同操作系统下的兼容性 ...

  3. JAVA判断各种类型数据是否为空

    1.判断list是否为空(Map.Set同list) if(list != null && list.size() == 0){ } if(list != null && ...

  4. java 判断int类型为空

    int id = 10; if("0".equals(String.valueOf(id)) || "null".equals(String.valueOf(i ...

  5. Java判断对象类型是否为数组

    判断对象是否为数组: public static void main(String[] args) { String[] a = ["1","2"]; if(a ...

  6. Java判断Integer类型的值是否相等

    我们知道Integer是int的包装类,在jdk1.5以上,可以实现自动装箱拆箱,就是jdk里面会自动帮我们转换,不需要我们手动去强转,所以我们经常在这两种类型中随意写,平时也没什么注意 但Integ ...

  7. H5案例分享:使用JS判断客户端、浏览器、操作系统类型

    使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...

  8. JS判断访问设备、客户端操作系统类型

    先给出一个实例:判断windows.linux.android 复制以下代码另存为html文件即可. <html> <head> <title>判断操作系统< ...

  9. 【javascript】—— JS判断浏览器类型、操作系统

    navigator.userAgent : userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值. navigator.platform : platform ...

随机推荐

  1. 真相:中国版BBB用USB连电脑没有盘符的根本原因分析

    很多网友在问:为什么中国版的装完驱动插上板子没有显示端口号和69M的盘符??楼主发现,在开机启动的时候,加载g_multi模块时出现错误提示 invalid argument.         Emb ...

  2. WPF遇到无边框的问题

    今天做一个项目采用的是WPF开发并且在制作窗体的时候用到无边框的问题,由于WPF开发和winform开发用点不一样, 遇到了这个问题就帮这个遇到问题的解决方法写下来方便以后忘记了和给一些遇到的朋友做一 ...

  3. VB学习笔记

    stack segment stack 'stack' dw dup() ;此处输入堆栈段代码 stack ends data segment ;IBUF OBUF 看成是内存的地址,IBUF+1和I ...

  4. nyoj 2 括号配对问题

    括号配对问题 时间限制:3000 ms  |            内存限制:65535 KB 难度:3   描述 现在,有一行括号序列,请你检查这行括号是否配对.   输入 第一行输入一个数N(0& ...

  5. jquery操作iframe中的js函数

    关键字:jquery操作iframe中的js函数 1.jquery操作iframe中的元素(2种方式) var tha = $(window.frames["core_content&quo ...

  6. NFC标签

    2.4 NFC标签 NFC标签(以下也称tag)是一种带有NFC电路和天线的钱币大小的电子标签,见图2.1,小容量的标签售价约1元左右一枚. 基本标签类型有四种,以1至4来标识,各有不同的格式与容量. ...

  7. 网站部署后,ie不能显示本地的图片

    html:<div id="imgPreview"  style='width:144px; height:80px;'>                        ...

  8. 关于使用用友华表Cell控件按需打印行的方法

    分享下只需一个cll文件按需打印行的觉得最好的方式:1.cell文件要打印行的地方最好不要全删了,留一行,设置好单元格样式(字体.对齐方式.折行自适应等),后面会省一些代码: 2.使用CopyRang ...

  9. jfinal不能正确加载html网页,总是报错的解决方法

    今天自学jfinal,遇到一个很奇怪的问题,render("/index.html");总是报错. 仔细看错误日志,才发现原来是因为html网页放到了WEB-INF文件夹下面了,所 ...

  10. ASP.NET跨页面传值技巧

      1 使用QueryString变量    QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用  ...