专栏首页业余草java准确的获取操作系统的名称

java准确的获取操作系统的名称

程序员都很懒,你懂的!

在我们日常开发中,经常需要判断操作系统的版本或者系统的名字等等。这就需要我们用到jdk默认带的一些属性了。这里我对各个版本的系统都做了区分,分别能判断mac,linux,window等大众的操作系统名称。直接看代码(OSUtil.java):

package com.herman.util;
/**
 * @see 获取操作系统名称
 * @author Herman.Xiong
 * @date 2014年4月22日 13:36:14
 * @version V1.0
 * @since jdk 1.6
 */
public class OSUtil {
	private static final boolean osIsMacOsX;
	private static final boolean osIsWindows;
	private static final boolean osIsWindowsXP;
	private static final boolean osIsWindows2003;
	private static final boolean osIsWindowsVista;
	private static final boolean osIsLinux;
	private static final boolean osIsWindowsWin7;
	private static final boolean osIsWindowsWin8;

	static {
		String os = System.getProperty("os.name");
		if (os != null)
			os = os.toLowerCase();
		osIsMacOsX = "mac os x".equals(os);
		osIsWindows = os != null && os.indexOf("windows") != -1;
		osIsWindowsXP = "windows xp".equals(os);
		osIsWindows2003 = "windows 2003".equals(os);
		osIsWindowsVista = "windows vista".equals(os);
		osIsLinux = os != null && os.indexOf("linux") != -1;
		osIsWindowsWin7 = os !=null && os.indexOf("windows 7") != -1;
		osIsWindowsWin8 = os !=null && os.indexOf("windows 8") != -1;
	}

	public static boolean isMacOSX() {
		return osIsMacOsX;
	}

	public static boolean isWindows() {
		return osIsWindows;
	}

	public static boolean isWindowsXP() {
		return osIsWindowsXP;
	}

	public static boolean isWindows2003() {
		return osIsWindows2003;
	}

	public static boolean isWindowsVista() {
		return osIsWindowsVista;
	}

	public static boolean isLinux() {
		return osIsLinux;
	}

	public static boolean IsWindowsWin7(){
		return osIsWindowsWin7;
	}
	
	public static boolean IsWindowsWin8(){
		return osIsWindowsWin8;
	}
}

精华都在上面。下面我们用各种jdk版本和各种操作系统进行测试。测试代码(TestOS.java):

package com.herman.test;

import com.herman.util.OSUtil;
/**
 * @see 测试操作系统类型
 * @author Herman.Xiong
 * @date 2014年4月22日 13:40:06
 * @version V1.0
 * @since jdk 1.6
 */
public class TestOs {
	
	public static String getVersion(){
		return "当前版本 V1.0 2014年4月22日 11:57:20";
	} 
	public static void main(String[] args) {
		System.out.println(System.getProperty("os.name"));
		System.out.println(getVersion());
		System.out.println("当前系统为Mac系统:"+OSUtil.isMacOSX());
		System.out.println("当前系统为Linux系统:"+OSUtil.isLinux());
		System.out.println("当前系统为Window系统:"+OSUtil.isWindows());
		System.out.println("当前系统为Windows2003系统:"+OSUtil.isWindows2003());
		System.out.println("当前系统为WindowsVista系统:"+OSUtil.isWindowsVista());
		System.out.println("当前系统为WindowsXP系统:"+OSUtil.isWindowsXP());
		/*
		 * 注意:如果使用的1.6的jdk,那么对于win7和win8系统都显示的“Windows Vista”
		 * 如果要正确判断win7还是win8系统,则需要使用jdk1.7
		 * android系统需要稍微改动
		 */
		System.out.println("当前系统为Windows7系统:"+OSUtil.IsWindowsWin7());
		System.out.println("当前系统为Windows8系统:"+OSUtil.IsWindowsWin8());
	}
}

运行效果截图:

源代码下载地址http://download.csdn.net/detail/xmt1139057136/7232817

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 来自 BAT 大牛总结的常用设计模式汇总

    原文链接:https://cnblogs.com/chenshuyong/p/9998164.html

    业余草
  • 面试官:说说Ribbon是如何实现负载均衡的?

    Ribbon的作用是负载均衡,但是根据我面试他人的情况来看,很多人只忙于业务,而不清楚具体的底层原理,在面试中是很容易吃亏的。基于此,本文就来分析一下这里面的请...

    业余草
  • 看完这篇文章再也不怕面试被问@transactional不生效的原因了

    代理设计模式,用于无侵入性地增强方法功能。代理模式是指,目标类的方法执行,需要委托给代理类执行,代理类可以在执行目标方法前/后,处理一些其它事情,这样就可以起到...

    业余草
  • 一句话,讲清楚java泛型的本质(非类型擦除)

    (3)方法二报错的地方是在 System.out.println(sort2(list).getClass());这行,而不是 returnlist.toArr...

    彤哥
  • OOAD-设计模式(三)之创建型设计模式(5种)

    前言   前面介绍了OOAD的基础知识,现在我们来详细的说明一下GOF设计模式中的23种模式,希望大家能够学到东西! 一、工厂方法模式(Factory Meth...

    用户1195962
  • TransactionTemplate编程式事务管理

    之前使用 JDBC API 操作, 经常用到的对象有: connection 和 preparedStatement. dbConnection.setAuto...

    IT技术小咖
  • SpringBoot : 30秒学会热部署配置

    源码之路
  • 如何使用Python选择性地删除文件夹中的文件?

    问题描述:在一个文件夹中,有着普通文件以及文件夹,那么我们如何做到删除全部文件夹而不删除文件呢?

    数据医生
  • B站弹幕爬虫

    B站作为弹幕文化的代表,有着非常丰富的弹幕资源。今天我们尝试对B站的弹幕进行爬虫并且绘制词云图展示爬虫结果。

    HuangWeiAI
  • B站弹幕爬虫

    B站作为弹幕文化的代表,有着非常丰富的弹幕资源。今天我们尝试对B站的弹幕进行爬虫并且绘制词云图展示爬虫结果。

    数据森麟

扫码关注云+社区

领取腾讯云代金券