Java --- 获取系统信息

本文的核心内容:Java如何获取系统信息,Java如何获取本机IPV4地址。


 

一:系统属性

//获得用户的目录
String userHome = System.getProperty("user.home");

System.getProperty();接收参数以及含义如下:

java.version
Java 运行时环境版本               
java.vendor
Java 运行时环境供应商             
java.vendor.url
Java 供应商的 URL               
java.home
Java 安装目录                   
java.vm.specification.version
Java 虚拟机规范版本               
java.vm.specification.vendor
Java 虚拟机规范供应商             
java.vm.specification.name
Java 虚拟机规范名称               
java.vm.version
Java 虚拟机实现版本               
java.vm.vendor
Java 虚拟机实现供应商             
java.vm.name
Java 虚拟机实现名称               
java.specification.version
Java 运行时环境规范版本           
java.specification.vendor
Java 运行时环境规范供应商         
java.specification.name
Java 运行时环境规范名称           
java.class.version
Java 类格式版本号                 
java.class.path
Java 类路径                     
java.library.path
加载库时搜索的路径列表             
java.io.tmpdir
默认的临时文件路径                 
java.compiler
要使用的 JIT 编译器的名称         
java.ext.dirs
一个或多个扩展目录的路径           
os.name
操作系统的名称                   
os.arch
操作系统的架构                   
os.version
操作系统的版本                   
file.separator
文件分隔符(在 UNIX 系统中是“/” )
path.separator
路径分隔符(在 UNIX 系统中是“:” )
line.separator
行分隔符(在 UNIX 系统中是“/n” )
user.name
用户的账户名称                   
user.home
用户的主目录                     
user.dir
用户的当前工作目录  

这些内容看似有很多,其实很多都不常用。常用的有获取用户的当前工作目录、获取操作系统的名称等等。

 

二:系统变量

Java 获取环境变量的方式非常easy:
System.getEnv()  得到全部的环境变量
System.getEnv(key) 得到某个环境变量的值
 Map map = System.getenv();
 Iterator it = map.entrySet().iterator();
 while(it.hasNext()) {
     Entry entry = (Entry)it.next();
     System.out.print(entry.getKey()+"=");
     System.out.println(entry.getValue());
 }

有时觉得这些类真的很鸡肋。

有一次,主管让我区分不同副本(同一个项目部署在多个机器上)。他给我的一种实现方案是,通过Docker设置不同的环境变量,程序获取那个系统变量就可以区分不同副本。

你懂得更多,面临问题时,才有可能有解决方案。

 

三:获取本机IP

windows操作系统下:

String address = InetAddress.getLocalHost().getHostAddress().toString();

上面这种写法在Linux操作系统上行不通。

 

Linux操作系统下(windows操作系统也行):

public String localIP() {
        try {
            Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces();
            InetAddress ip;
            while (allNetInterfaces.hasMoreElements()) {
                NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
                Enumeration addresses = netInterface.getInetAddresses();
                    while (addresses.hasMoreElements()) {
                        ip = (InetAddress) addresses.nextElement();
                        if (ip != null && ip instanceof Inet4Address && !"127.0.0.1".equals(ip.getHostAddress())) {
                            return ip.getHostAddress();
                        }
                    }
                
            }
        } catch (SocketException e) {
            logger.error(e.getMessage(), e);
        }
        return "获取服务器IP错误";
    }

 

你可能感兴趣的:(Leak,Filling)