java平台自身使用Properties对象来维护自己的配置。系统类维护一个描述当前工作环境的Properties对象。系统属性包含当前用户信息、java运行时环境的当前版本、文件路径的分隔符等信息。
Key | Meaning |
---|---|
"file.separator" | Character that separates components of a file path. This is "/ " on UNIX and "\ " on Windows. |
"java.class.path" | Path used to find directories and JAR archives containing class files. Elements of the class path are separated by a platform-specific character specified in thepath.separator property. |
"java.home" | Installation directory for Java Runtime Environment (JRE) |
"java.vendor" | JRE vendor name |
"java.vendor.url" | JRE vendor URL |
"java.version" | JRE version number |
"line.separator" | Sequence used by operating system to separate lines in text files |
"os.arch" | Operating system architecture |
"os.name" | Operating system name |
"os.version" | Operating system version |
"path.separator" | Path separator character used in java.class.path |
"user.dir" | User working directory |
"user.home" | User home directory |
"user.name" | User account name |
安全性考虑:访问系统属性会受到平台安全性机制的限制。
读系统属性:系统类有两个方法读取系统属性 getProperty() 和getProperties()。
有两个不同的getProperty()
1.getProperty(String key) 通过key值查找对应的Value,如果没有找到返回null.
2.getProperty(String key String defaultValue) 通过 key值查找对应的Value,如果没有找到则返回 defaultValue.
getProperties()
写系统属性:System.setProperties()
系统使用System.setProperties()修改系统属性。
要注意的是:改变系统属性是具有潜在危险的,所以应当特别的谨慎
举一个例子:PropertiesTest类 在myProperties中加入下面内容
subliminal.message=Buy StayPuft Marshmallows!
import java.io.FileInputStream; import java.util.Properties; public class PropertiesTest { public static void main(String[] args) throws Exception { // set up new properties object // from file "myProperties.txt" FileInputStream propFile = new FileInputStream( "myProperties.txt"); Properties p = new Properties(System.getProperties()); p.load(propFile); // set the system properties System.setProperties(p); // display new properties System.getProperties().list(System.out); } }
System.setProperties改变了当前运行的应用程序的系统属性,这些改变没有被持久化,也就是说,这个改变不会影响以后的对于系统属性的调用(重启jvm)或者是其他的应用程序。系统属性会在每次重启后被重新初始化。