使用环境变量获取特定系统信息

时间:2012-09-09 17:39:17

标签: java operating-system environment-variables

请查看以下代码

Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));}

使用此代码段,我可以获得所需的所有信息,以及大量的NO-NEED信息。说实话,我需要的是处理器数量和处理器标识符。这两个存储在Windows系统中的环境变量PROCESSOR_IDENTIFIER和NUMBER_OF_PROCESSORS中。

我无法调用此代码

System.out.println("Processor Data: "+ System.getenv("PROCESSOR_IDENTIFIER")); 
    System.out.println("Number of Processors: "+System.getenv("NUMBER_OF_PROCESSORS"));

原因是,oracle它自己说环境变量因系统而异。这意味着,USERNAME windows环境变量是UNIX系统中的LOGIN或用户名。像这样,它可能在其他系统中有其他各种名称。

但是,我真的不需要循环提供给我的所有信息。我只需要那两个。我正在考虑使用如下代码。

if("os.name" == "Windows")
{
System.out.println("Processor Data: "+ System.getenv("PROCESSOR_IDENTIFIER")); 
}

然而,在这种情况下,我不知道需要检查多少系统(我的意思是,这些环境变量是否从操作系统更改为操作系统或系统更改为系统?如果我更清楚,这些变量是否是在Linux内核中也是如此,或者在Ubuntu,Fedora,Red Hat等上进行更改?)

我不知道如何获得我需要的唯一两个数据,省略其余数据。请帮忙。我非常高兴看到代码有所帮助。谢谢

2 个答案:

答案 0 :(得分:2)

你能试试Runtime.getRuntime().availableProcessors();吗?

答案 1 :(得分:0)

CPU /核心数:Finding Number of Cores in Java 不要认为可以通过方便的跨平台方式获得CPU类型。