java技术之System

1. 系统变量之System.getenv()和System.getProperty()

Java提供了System类的静态方法getenv()和getProperty()用于返回系统相关的变量与属性,getenv方法返回的变量大多于系统相关,getProperty方法返回的变量大多与java程序有关。

  • System.getenv() 方法是获取指定的环境变量的值。

  • System.getenv(String str) 接收参数为任意字符串,当存在指定环境变量时即返回环境变量的值,否则返回null。

  • System.getProperty() 是获取系统的相关属性,包括文件编码、操作系统名称、区域、用户名等,此属性一般由jvm自动获取,不能设置。

  • System.getProperty(String str) 接收参数为任意字符串,当存在指定属性时即返回属性的值,否则返回null。

方法定义:

1
2
3
4
5
6
7
8
public static String getenv(String name) {
SecurityManager sm = getSecurityManager();
if (sm != null) {
sm.checkPermission(new RuntimePermission("getenv."+name));
}

return ProcessEnvironment.getenv(name);
}

java.lang.System.getenv(String name)方法获取指定的环境变量的值。环境变量是依赖于系统的外部命名值。

环境变量应使用一个全局作用,或者当外部系统的接口需要一个环境变量(如PATH)。

下面的例子显示java.lang.System.getenv()方法的使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args){
System.out.println("Java运行时环境版本:"+System.getProperty("java.version"));
System.out.println("Java 运行时环境供应商:"+System.getProperty("java.vendor"));
System.out.println("Java 供应商的URL:"+System.getProperty("java.vendor.url"));
System.out.println("Java安装目录:"+System.getProperty("java.home"));
System.out.println("Java 虚拟机规范版本:"+System.getProperty("java.vm.specification.version"));
System.out.println("Java 类格式版本号:"+System.getProperty("java.class.version"));
System.out.println("Java类路径:"+System.getProperty("java.class.path"));
System.out.println("操作系统的名称:"+System.getProperty("os.name"));
System.out.println("操作系统的架构:"+System.getProperty("os.arch"));
System.out.println("操作系统的版本:"+System.getProperty("os.version"));
System.out.println("用户的主目录:"+System.getProperty("user.home"));
System.out.println("用户的当前工作目录:"+System.getProperty("user.dir"));
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
System.out.println("自定义变量getProperty CONF_LOCATION:"+System.getProperty("conf.location"));
System.out.println("--------------------------------------------");
System.out.println("自定义变量getenv CONF_LOCATION:"+System.getenv("conf.location"));

}

总结:它们返回的是都是map类型的键对值。

在测试项目中经常用在初始化测试环境。

1.1 System.getenv()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
System.getenv()

USERPROFILE :用户目录
USERDNSDOMAIN :用户域
PATHEXT :可执行后缀
JAVA_HOME :Java安装目录
TEMP :用户临时文件目录
SystemDrive :系统盘符
ProgramFiles :默认程序目录
USERDOMAIN :帐户的域的名称
ALLUSERSPROFILE :用户公共目录
SESSIONNAME :Session名称
TMP :临时目录
Path :path环境变量
CLASSPATH :classpath环境变量
PROCESSOR_ARCHITECTURE :处理器体系结构
OS :操作系统类型
PROCESSOR_LEVEL :处理级别
COMPUTERNAME :计算机名
Windir :系统安装目录
SystemRoot :系统启动目录
USERNAME :用户名
ComSpec :命令行解释器可执行程序的准确路径
APPDATA :应用程序数据目录

1.2 System.getProperty()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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 :文件分隔符
path.separator :路径分隔符
line.separator :行分隔符
user.name :用户的账户名称
user.home :用户的主目录
user.dir:用户的当前工作目录