Java 根据环境属性区分不同操作系统

本文介绍如何利用Java的System类获取操作系统名称等环境属性,并通过示例代码展示了如何根据这些属性来区分不同操作系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 根据环境属性区分不同操作系统

之前项目需要配置下载文件的路径,本机系统是win 10 ,而服务器系统是CentOS。配置默认下载路径(非项目内相对路径),就会出现问题。windows 路径是由盘符打头,而 CentOS 是由反斜杠 ‘/’开头,如何区分不同的系统?

根据环境属性获取具体的系统名,根据系统名判断。

    String osName = System.getProperty("os.name");

或者

    String osName = System.getProperties().getProperty("os.name");

使用的是 JDK 自带的方法, java.lang.System类的getProperties()方法。该方法的返回值是一个 Properties 对象,我们可以使用不同的属性名获取不同含义的环境属性值。

keyvalue含义
java.versionJava Runtime Environment versionJRE 运行环境版本
java.vendorJava Runtime Environment vendorJRE 供应商
java.vendor.urlJava vendor URLJava 供应商网址
java.homeJava installation directoryjava 安装目录
java.vm.specification.versionJava Virtual Machine specification versionjava 虚拟机规格版本
java.vm.specification.vendorJava Virtual Machine specification vendorjava 虚拟机规格供应商
java.vm.specification.nameJava Virtual Machine specification namejava 虚拟机详细名称
java.vm.versionJava Virtual Machine implementation versionjava 虚拟机实现版本
java.vm.vendorJava Virtual Machine implementation vendorjava 虚拟机实现供应商
java.vm.nameJava Virtual Machine implementation namejava 虚拟机实现名称
java.specification.versionJava Runtime Environment specification versionJRE 规格版本
java.specification.vendorJava Runtime Environment specification vendorJRE 规格供应商
java.specification.nameJava Runtime Environment specification nameJRE 规格名称
java.class.versionJava class format version numberjava 类规格版本号
java.class.pathJava class pathjava 类路径
java.library.pathList of paths to search when loading libraries加载库时搜索的路径列表
java.io.tmpdirDefault temp file path默认的临时文件路径
java.compilerName of JIT compiler to usejava 编译器名称
java.ext.dirsPath of extension directory or directories扩展路径的文件夹
os.nameOperating system name操作系统名称
os.archOperating system architecture操作系统架构
os.versionOperating system version操作系统版本
file.separatorFile separator (“/” on UNIX)文件分隔符
path.separatorPath separator (“:” on UNIX)路径分隔符
line.separatorLine separator (“\n” on UNIX)换行符
user.nameUser’s account name用户名
user.homeUser’s home directory用户主目录
user.dirUser’s current working directory当前目录

更多的属性可以遍历 Properties 变量,打印出 key : value 键值对。

 Set<Entry<Object, Object>> sets = System.getProperties().entrySet();
     for(Entry<Object, Object> entry : sets){
        System.out.println(entry.getKey()+" : "+entry.getValue());
        }

最后可以进行简单的封装

public class SystemRecognize {
    public static Properties props;

    static{
        props = System.getProperties();
    }

    /**
     * 获取系统的名称
     * @return
     */
    public static String getOSName(){
        return props.getProperty("os.name");
    }

    /**
     * 获取系统的架构
     * @return
     */
    public static String getOSArch(){
        return props.getProperty("os.arch");
    }

    /**
     * 获取系统的文件分隔符
     * @return
     */
    public static String getFileSeparator(){
        return props.getProperty("file.separator");
    }

    /**
     * 获取系统的属性值
     * @return
     */
    public static String getValue(String propertyName){
        return props.getProperty(propertyName);
        // return System.getProperty(propertyName);
    }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值