[Java] 获取操作系统类型

需求描述

  • 在进行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

posted @ 2024-11-18 19:41  千千寰宇  阅读(20)  评论(0编辑  收藏  举报