本文的核心内容: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错误";
}