首页 > 编程语言 >[Java] 获取操作系统类型

[Java] 获取操作系统类型

时间:2024-11-18 19:29:52浏览次数:1  
标签:code return 操作系统 获取 OSType Java OS String

需求描述

  • 在进行Java开发时,我们有时需要根据不同的操作系统执行不同的操作,例如在Windows系统下执行不同的命令,或者在Linux系统下调用不同的库函数。

因此,判断当前运行的操作系统是十分重要的。

  • 此文将介绍如何使用Java判断当前操作系统,并给出相应的代码示例。

代码示例

OsUtils

import java.util.Properties;

/**
 * 操作系统工具类
 */
public class OsUtils {
    public static final String OS_NAME = "os.name";

    public static OSType getOSType(Properties systemProperties){
        if(systemProperties == null){
            systemProperties = System.getProperties();
        }
        String osName = systemProperties.getProperty(OS_NAME);
        if(osName == null){
            return OSType.UNKNOWN;
        }
        osName = osName.toLowerCase();
        if(osName.contains("windows")){//eg: "Windows 10"
            return OSType.WINDOWS;
        } else if(osName.contains("linux")){//"nux" | eg : "Linux"
            return OSType.LINUX;
        } else if(osName.contains("unix")) {//"nix"
            return OSType.UNIX;
        } else if(osName.contains("mac")){//eg: "Mac OS X"
            return OSType.MAC;
        } else if(osName.contains("sol")){//"sol"
            return OSType.SOLARIS;
        }
        return OSType.UNKNOWN;
    }
}

OSType

public enum OSType {
    WINDOWS("WINDOWS", "Windows")
    , LINUX("LINUX", "Linux")
    , UNIX("UNIX", "Unix")
    , MAC("MAC", "Mac OS")
    , SOLARIS("SOLARIS", "Solaris OS")
    , UNKNOWN("UNKNOWN", "Unknown OS")
    ;

    private String code;
    private String name;

    OSType(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public static String getName(String code) {
        for (OSType c : OSType.values()) {
            if (c.getCode().equals(code)) {
                return c.name();
            }
        }
        return null;
    }

    public static OSType getEnum(String code) {
        for (OSType c : OSType.values()) {
            if (c.getCode().equals(code)) {
                return c;
            }
        }
        return null;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

第三方库

common-lang3 : SystemUtils

  • Apache Commons Lang库是一组扩展了Java标准库的工具类,其中的SystemUtils类提供了一些静态方法用于获取系统信息。

依赖

  • 首先,需要将Apache Commons Lang库添加到项目中。可以通过Maven或手动下载并引入Jar包的方式添加。
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

使用

  • 获取系统属性OS_NAME
org.apache.commons.lang3.SystemUtils.OS_NAME
  • SystemUtils.IS_OS_XX | 判断操作系统类型
    然后,可以使用SystemUtils.IS_OS_XXX常量判断当前操作系统,例如:
if (SystemUtils.IS_OS_WINDOWS) {
    // Windows操作系统
} else if (SystemUtils.IS_OS_MAC) {
    // Mac操作系统
} else if (SystemUtils.IS_OS_LINUX) {
    // Linux操作系统
} else {
    // 其他操作系统
}

X 参考文献

  • org.apache.commons:commons-lang3:3.12.0

org.apache.commons.lang3.SystemUtils#OS_NAME/IS_OS_WINDOWS/IS_OS_MAC/IS_OS_LINUX

标签:code,return,操作系统,获取,OSType,Java,OS,String
From: https://www.cnblogs.com/johnnyzen/p/18553484

相关文章

  • ssm140基于java的奶茶店管理系统的设计与实现+jsp(论文+源码)_kaic
    毕业设计(论文)奶茶店管理系统 学   院                       专   业                       班   级                       学   号                   ......
  • JavaScript 字符串的常用方法有哪些
    速览JavaScript字符串的常用方法包括charAt、charCodeAt、concat、indexOf、lastIndexOf、slice、substring、toLowerCase、toUpperCase、trim、replace、split、padStart、padEnd等。详答1.基本信息JavaScript中的字符串是一种原始数据类型,提供了丰富的操作方法来处......
  • 【JAVA】Java基础—面向对象编程:类的其他特性—静态成员与方法
    在Java中,静态成员和静态方法是类的一部分,而不是类的实例的一部分。这意味着静态成员和方法可以在没有创建类的实例的情况下访问。理解静态成员和方法的概念对于Java开发至关重要,因为它们在内存管理、性能优化和设计模式中扮演着重要角色。理论知识1.静态成员静态变量:也称......
  • 【JAVA】Java基础—面向对象编程:类的其他特性—static 关键字的使用
    在Java编程中,static关键字是一个非常重要的概念,它用于定义类级别的成员,而不是实例级别的成员。理解static的使用对于编写高效、清晰和可维护的代码至关重要。在实际开发中,static关键字通常用于创建工具类、常量、单例模式以及共享数据等场景。理论知识1.static变量静态变......
  • Java基础知识(一)
    文章目录基础概念1.Java语言的特点2.JavaSEvsJavaEE3.JVMvsJDKvsJRE的区别a.JVMb.JDKc.JDEd.JDK、JRE和JVM的关系4.字节码5.Java语言“编译与解释并存”的特性6.AOT编译模式优势缺陷7.OracleJDKvsOpenJDK8.Java和C++的区别相同点:不同点......
  • Java学习之读取Yaml文件
    1.yaml文件示例:england:initialUrl:https://www.leisu.com/data/zuqiu/comp-82finalUrl:https://www.dszuqiu.com/league/35filePath:fileName:"英超.xlsx"spain:initialUrl:https://www.leisu.com/data/zuqiu/comp-120finalUrl:https://www.dszuqiu.......
  • Java 基础 -集合类
    集合类Java中重要的集合类有以下这些:集合类:Hashtable、HashMap、ArrayList、LinkedList、TreeMap、WeakHashMap1、ArrayListArrayList是一个有序数组,内部使用对象数组进行存储,并且有一个单独的size字段存储数组中对象的数量。transientObject[]elementData;privateint......
  • 使用ProxyPool搭建代理IP池并获取代理IP示例
    安装ProxyPool首先确保已经安装了 pip 工具(Python的包管理工具),在命令行执行以下命令安装 proxypool:配置ProxyPoolProxyPool的配置文件通常是 config.py,可以根据需求修改配置项,比如设置代理IP的来源、验证周期等。以下是一个简单示例配置(部分关键配置项示意):启动ProxyP......
  • 程序化交易系统如何获取MACDKDJBOLL等基础指标值?
    Python股票接口实现查询账户,提交订单,自动交易(1)Python股票程序交易接口查账,提交订单,自动交易(2)股票量化,Python炒股,CSDN交流社区>>>基础指标如MACD、KDJ、BOLL等在交易中非常关键。MACD能显示股价趋势的强弱,通过DIF线与DEA线的交叉等情况,投资者可判断股票买卖时机。KDJ指......
  • swift 获取通知设置
     根据授权状态更新变量.authorized:当用户授权通知时,设置 hasNotification=true 和 enableNotification=true。.denied:当用户拒绝通知时,设置 hasNotification=false。.notDetermined:当通知权限尚未决定时,设置 hasNotification=false(也可以根据实际需要做......