java中System.getProperties默认都存有哪些信息

     java中的System.getProperties看类名看方法名,见名知意,这是说系统的属性,那么通过System.getProperties我们能获取到什么系统信息呢,写个小例子测试下

private static void printSystemProperty(){
		Properties property = System.getProperties();
		Set<String> names = property.stringPropertyNames();
		Set<String> sort = new TreeSet<String>();//排下序
		for(String name : names){
			sort.add(name);
		}
		for(String name : sort){
			System.out.println(name+"="+property.getProperty(name));
		}
	}

执行结果

awt.toolkit=sun.awt.windows.WToolkit
file.encoding=UTF-8
file.encoding.pkg=sun.io
file.separator=\
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.awt.printerjob=sun.awt.windows.WPrinterJob
java.class.path=E:\test2\test200\target\classes;E:\setup\maven\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;E:\setup\maven\org\slf4j\slf4j-api\1.6.1\slf4j-api-1.6.1.jar;E:\setup\maven\org\slf4j\slf4j-log4j12\1.6.1\slf4j-log4j12-1.6.1.jar;E:\setup\maven\log4j\log4j\1.2.16\log4j-1.2.16.jar;E:\setup\maven\jline\jline\0.9.94\jline-0.9.94.jar;E:\setup\maven\junit\junit\3.8.1\junit-3.8.1.jar;E:\setup\maven\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;E:\setup\maven\org\springframework\spring-webmvc\4.2.1.RELEASE\spring-webmvc-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-beans\4.2.1.RELEASE\spring-beans-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-context\4.2.1.RELEASE\spring-context-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-aop\4.2.1.RELEASE\spring-aop-4.2.1.RELEASE.jar;E:\setup\maven\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;E:\setup\maven\org\springframework\spring-core\4.2.1.RELEASE\spring-core-4.2.1.RELEASE.jar;E:\setup\maven\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;E:\setup\maven\org\springframework\spring-expression\4.2.1.RELEASE\spring-expression-4.2.1.RELEASE.jar;E:\setup\maven\org\springframework\spring-web\4.2.1.RELEASE\spring-web-4.2.1.RELEASE.jar
java.class.version=51.0
java.endorsed.dirs=D:\jre1.7\lib\endorsed
java.ext.dirs=D:\jre1.7\lib\ext;C:\Windows\Sun\Java\lib\ext
java.home=D:\jre1.7
java.io.tmpdir=C:\Users\WEIJIA~1\AppData\Local\Temp\
java.library.path=D:\jre1.7\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.6.0_45\bin;C:\Program Files\Java\jdk1.6.0_45\jre\bin;D:\soft\svn1.8\bin;D:\apache-maven-3.2.3\bin;D:\mysql5.7\MySQL Server 5.7\bin;D:\mysql5.7\MySQL Utilities 1.3.5\;D:\mongoDB;;.
java.runtime.name=Java(TM) SE Runtime Environment
java.runtime.version=1.7.0_80-b15
java.specification.name=Java Platform API Specification
java.specification.vendor=Oracle Corporation
java.specification.version=1.7
java.vendor=Oracle Corporation
java.vendor.url=http://java.oracle.com/
java.vendor.url.bug=http://bugreport.sun.com/bugreport/
java.version=1.7.0_80
java.vm.info=mixed mode
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Oracle Corporation
java.vm.specification.version=1.7
java.vm.vendor=Oracle Corporation
java.vm.version=24.80-b11
line.separator=

os.arch=amd64
os.name=Windows 7
os.version=6.1
path.separator=;
sun.arch.data.model=64
sun.boot.class.path=D:\jre1.7\lib\resources.jar;D:\jre1.7\lib\rt.jar;D:\jre1.7\lib\sunrsasign.jar;D:\jre1.7\lib\jsse.jar;D:\jre1.7\lib\jce.jar;D:\jre1.7\lib\charsets.jar;D:\jre1.7\lib\jfr.jar;D:\jre1.7\classes
sun.boot.library.path=D:\jre1.7\bin
sun.cpu.endian=little
sun.cpu.isalist=amd64
sun.desktop=windows
sun.io.unicode.encoding=UnicodeLittle
sun.java.command=com.fei.SystemOperation
sun.java.launcher=SUN_STANDARD
sun.jnu.encoding=GBK
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
sun.os.patch.level=Service Pack 1
user.country=CN
user.dir=E:\test2\test200
user.home=E:\USER\weijianfei
user.language=zh
user.name=weijianfei
user.script=
user.timezone=
user.variant=

      大部分看名称就知道什么意思了,有些可能不是很直观,百度了下,下面只是一部分

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   用户的当前工作目录

      粗看之下,就知道我们可以获取到jvm相关的一些信息,操作系统的一些信息(如系统名称,版本之类的名称)....

我将这小例子放到linux(redhat下)下执行,也是OK的,可以获取到这些基本信息。

       有些人在一些开源项目或公司项目里面看到System.getProperty(key),会发现这个key怎么在上面的列表找不到呢,那是因为这个key时开发人员自己set进去的,看System的源码,发现

 public static String setProperty(String key, String value) {
	checkKey(key);
	SecurityManager sm = getSecurityManager();
        if (sm != null) {
	    sm.checkPermission(new PropertyPermission(key,
		SecurityConstants.PROPERTY_WRITE_ACTION));
	}

	return (String) props.setProperty(key, value);
    }
     System中提供了setProperty的方法,其中的props,

 /**
     * System properties. The following properties are guaranteed to be defined:
     * <dl>
     * <dt>java.version		<dd>Java version number
     * <dt>java.vendor		<dd>Java vendor specific string
     * <dt>java.vendor.url	<dd>Java vendor URL
     * <dt>java.home		<dd>Java installation directory
     * <dt>java.class.version	<dd>Java class version number
     * <dt>java.class.path	<dd>Java classpath
     * <dt>os.name		<dd>Operating System Name
     * <dt>os.arch		<dd>Operating System Architecture
     * <dt>os.version		<dd>Operating System Version
     * <dt>file.separator	<dd>File separator ("/" on Unix)
     * <dt>path.separator	<dd>Path separator (":" on Unix)
     * <dt>line.separator	<dd>Line separator ("\n" on Unix)
     * <dt>user.name		<dd>User account name
     * <dt>user.home		<dd>User home directory
     * <dt>user.dir		<dd>User's current working directory
     * </dl>
     */

    private static Properties props;

       它是个static类型的,所以有些人喜欢在项目启动的时候,放某些数据到System的props中来,方便其他地方获取






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值