如何在Java中获取系统属性?
时间:2020-02-23 14:36:15 来源:igfitidea点击:
Java中的System类维护一组属性。
这些属性以键/值对的形式存储。
键和值都是定义当前工作环境的特征或者属性的字符串。
您可以使用两种方法来读取系统属性:getProperty()和getProperties()。
用Java获取所有系统属性
System.getProperties()返回所有系统属性的枚举。
以下代码在控制台上打印所有系统属性。
import java.util.Enumeration; import java.util.Properties; public class Main { public static void main(String[] args) { Properties p = System.getProperties(); Enumeration keys = p.keys(); while (keys.hasMoreElements()) { String key = (String)keys.nextElement(); String value = (String)p.get(key); System.out.println(key + ": " + value); } } }
输出
文本形式的输出:
gopherProxySet: false awt.toolkit: sun.lwawt.macosx.LWCToolkit java.specification.version: 11 sun.cpu.isalist: sun.jnu.encoding: UTF-8 java.class.path: /Users/jayant/Desktop/java/JD1/out/production/JD1 java.vm.vendor: Oracle Corporation sun.arch.data.model: 64 java.vendor.url: http://java.oracle.com/ user.timezone: os.name: Mac OS X java.vm.specification.version: 11 sun.java.launcher: SUN_STANDARD user.country: GB sun.boot.library.path: /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/lib sun.java.command: Main http.nonProxyHosts: local|*.local|169.254/16|*.169.254/16 jdk.debug: release sun.cpu.endian: little user.home: /Users/jayant user.language: en java.specification.vendor: Oracle Corporation java.version.date: 2016-10-16 java.home: /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home file.separator: / java.vm.compressedOopsMode: Zero based line.separator: java.specification.name: Java Platform API Specification java.vm.specification.vendor: Oracle Corporation java.awt.graphicsenv: sun.awt.CGraphicsEnvironment sun.management.compiler: HotSpot 64-Bit Tiered Compilers ftp.nonProxyHosts: local|*.local|169.254/16|*.169.254/16 java.runtime.version: 11.0.2+7-LTS user.name: jayant path.separator: : os.version: 10.14.2 java.runtime.name: Java(TM) SE Runtime Environment file.encoding: UTF-8 java.vm.name: Java HotSpot(TM) 64-Bit Server VM java.vendor.version: 18.9 java.vendor.url.bug: http://bugreport.java.com/bugreport/ java.io.tmpdir: /var/folders/56/fc29wjz520x_21fmrl9r2jgc0000gn/T/ java.version: 11.0.2 user.dir: /Users/jayant/Desktop/java/JD1 os.arch: x86_64 java.vm.specification.name: Java Virtual Machine Specification java.awt.printerjob: sun.lwawt.macosx.CPrinterJob sun.os.patch.level: unknown java.library.path: /Users/jayant/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. java.vendor: Oracle Corporation java.vm.info: mixed mode java.vm.version: 11.0.2+7-LTS sun.io.unicode.encoding: UnicodeBig java.class.version: 55.0 socksNonProxyHosts: local|*.local|169.254/16|*.169.254/16 Process finished with exit code 0
重要系统属性
一些重要的系统属性是:
"file.separator"; | File separator (for example, "/";) |
"java.class.path"; | Java classpath |
"java.class.version"; | Java class version number |
"java.home"; | Java installation directory |
"java.vendor"; | Java vendor-specific string |
"java.vendor.url"; | Java vendor URL |
"java.version"; | Java version number |
"line.separator"; | Line separator |
"os.arch"; | Operating system architecture |
"os.name"; | Operating system name |
"os.version"; | Operating system version |
"path.separator"; | Path separator (for example, ":";) |
"user.language"; | Language used by User |
"user.dir"; | User's current working directory |
"user.home"; | User home directory |
"user.name"; | User account name |
获取特定的系统属性
要从列表中获取特定属性,请使用System.Property(key)。
其中key是要检索的属性的名称。
输出以字符串形式返回。
如果属性键不匹配,则返回null。
public class Main { public static void main(String[] args) { System.out.println(System.getProperty("java.class.path")); System.out.println(System.getProperty("os.name")); System.out.println(System.getProperty("user.name")); } }
输出
/Users/jayant/Desktop/java/JD1/out/production/JD1 Mac OS X jayant
这三个属性已被打印出来。
还有另一种变体,可以让您指定在属性名称不匹配的情况下必须打印的内容。
请注意以下内容在第四行和第五行中的区别:
public class Main { public static void main(String[] args) { System.out.println(System.getProperty("java.class.path")); System.out.println(System.getProperty("os.name")); System.out.println(System.getProperty("user.name")); System.out.println(System.getProperty("hello")); System.out.println(System.getProperty("hello","property not found")); } }
输出
/Users/jayant/Desktop/java/JD1/out/production/JD1 Mac OS X jayant null property not found
第四行返回null,因为" hello"与任何属性名称都不匹配。
第五行返回我们在代码"找不到属性"中提到的行。