引
Java 提供了获取系统信息的API 被封装在 System 类中,该类可以获取系统信息和环境信息。
分析
- System 类提供了标准输入、标准输出和标准错误输出
System.in.read()
System.out.println("");
System.err.println("")
- 常用的方法
数组拷贝 :arraycopy()
获取系统毫秒数:currentTimeMillis()
*退出:exit()
慎重使用
*GC :gc()
慎重使用
获取 Property 信息
常用的一些系统属性名称及含义:
属性名称 | 含义 |
---|---|
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 运行时环境规范名称 |
os.name | 操作系统的名称 |
os.arch | 操作系统的架构 |
os.version | 操作系统的版本 |
在一些跨平台的开发中,需要根据不同的操作系统做出不同的处理。Java提供了System类的getPropperty()方法,其中包含了一些判断操作系统的属性。
以下是判断操作系统的一些常用属性:
属性名称 | 含义 |
---|---|
os.name | 操作系统的名称 |
os.arch | 操作系统的架构(x86、x64等) |
os.version | 操作系统的版本 |
file.separator | 文件分隔符 |
path.separator | 路径分隔符 |
line.separator | 行分隔符 |
user.name | 当前用户的用户名 |
user.home | 当前用户的主目录 |
user.dir | 当前用户的工作目录 |
例如,以下代码可以判断当前操作系统是否是Windows:
if(System.getProperty("os.name").toLowerCase().contains("win")){
System.out.println("Windows");
} else {
System.out.println("Not Windows");
}
如果想要获取所有的系统属性,可以使用下面的代码:
Properties props = System.getProperties();
props.list(System.out);
相关API :
getProperties()
getPropertie(String key)
例如,以下代码可以获取当前JVM的版本号:
System.out.println(System.getProperty("java.version"));
获取 环境信息
Map<String,String> getenv = System.getenv();
System.setenv(key,val);
工具类
package com.xzbd.common.utils;
public class SystemUtil {
public static String getOsName() {
String osName = System.getProperty("os.name");
if (osName == null) {
return "";
}
return osName;
}
public static String getOsArch() {
String osArch = System.getProperty("os.arch");
if (osArch == null) {
return "";
}
return osArch;
}
public static String getOsVersion() {
String osVersion = System.getProperty("os.version");
if (osVersion == null) {
return "";
}
return osVersion;
}
public static boolean isLinux() {
return getOsName().toLowerCase().contains("linux");
}
public static boolean isWindows() {
return getOsName().toLowerCase().contains("windows");
}
public static String getLineSeprator() {
String lineSeprator = System.getProperty("line.separator");
if(lineSeprator == null) {
return "";
}
return lineSeprator;
}
public static String getUsername() {
String username = System.getProperty("user.name");
if(username == null) {
return "";
}
return username;
}
public static String getUserHome() {
String userhome = System.getProperty("user.home");
if(userhome == null) {
return "";
}
return userhome;
}
public static String getUserDir() {
String userdir = System.getProperty("user.dir");
if(userdir == null) {
return "";
}
return userdir;
}
}
开源工具
- commons-lang 中的
SystemUtils
<!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
- commons-lang3 中的
SystemUtils
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>