System类的学习

java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定的功能。Java提供了System类和Runtime类来与程序的运行平台进行交互。

System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。

System类提供了标准输入输出和错误输出的类变量,并提供一些静态方法用于访问环境变量、系统属性的方法,还提供了加载文件和动态链接库的方法。

    
    加载文件和动态链接库主要对native方法有用,对于一些特殊的功能(如访问操作系统底层硬件设备等)Java程序无法实现,必须借助C语言来完成,此时需要使用C语言为Java方法提供实现。其实现步骤:
	1、Java程序中声明native修饰的方法,类似于abstract方法,只有方法声明,没有方法实现。编译该Java程序,生成一个class文件。
	2、用Javah编译的第一步生成的class文件,将产生一个.h文件(这个文件包含了JDK自带的jni.h文件)。
	3、写一个.cpp文件实现native方法,这一步需要包括第二步产生的.h文件。
	4、将第三步的.cpp文件编译成动态链接库文件。
	5、在Java中用System类的loadLibrary()或者Runtime类的loadLibrary()方法加载第四步产生的动态链接库文件,Java程序就可以调用这个native方法了。

public static void main(String[] args) {
		Map<String,String> env = System.getenv();
		for(String name: env.keySet()){
			System.out.println(name+"---->"+env.get(name));
		}
		System.out.println(System.getenv("JAVA_HOME"));
		Properties props = System.getProperties();
		try {
			props.store(new PrintWriter(System.out), "system-properties");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(System.getProperty("os.name"));
	}
打印结果为:

USERPROFILE---->C:\Users\ASUS
ProgramData---->C:\ProgramData
PATHEXT---->.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
__COMPAT_LAYER---->VistaSetup RunAsAdmin
android---->E:\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;E:\android\adt-bundle-windows-x86_64-20140702\sdk\tools
ProgramFiles(x86)---->C:\Program Files (x86)
TEMP---->C:\Users\ASUS\AppData\Local\Temp
SystemDrive---->C:
ProgramFiles---->C:\Program Files (x86)
HOMEDRIVE---->C:
java_home---->E:\jdk
PROCESSOR_REVISION---->3a09
USERDOMAIN---->SEEK
ALLUSERSPROFILE---->C:\ProgramData
path---->C:\Program Files\Java\jdk1.6.0_45\bin;E:\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;E:\android\adt-bundle-windows-x86_64-20140702\sdk\tools;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem;E:\MySQL5.0\bin
ProgramW6432---->C:\Program Files
PROCESSOR_IDENTIFIER---->Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
SESSIONNAME---->Console
TMP---->C:\Users\ASUS\AppData\Local\Temp
CommonProgramFiles---->C:\Program Files (x86)\Common Files
LOGONSERVER---->\\SEEK
PROCESSOR_ARCHITECTURE---->x86
FP_NO_HOST_CHECK---->NO
OS---->Windows_NT
PROCESSOR_ARCHITEW6432---->AMD64
HOMEPATH---->\Users\ASUS
PROCESSOR_LEVEL---->6
CommonProgramW6432---->C:\Program Files\Common Files
classpath---->C:\Program Files\Java\jdk1.6.0_45\lib;E:\jdk\bin;
LOCALAPPDATA---->C:\Users\ASUS\AppData\Local
COMPUTERNAME---->SEEK
windir---->C:\Windows
SystemRoot---->C:\Windows
asl.log---->Destination=file
NUMBER_OF_PROCESSORS---->4
USERNAME---->ASUS
PUBLIC---->C:\Users\Public
PSModulePath---->C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
CommonProgramFiles(x86)---->C:\Program Files (x86)\Common Files
ComSpec---->C:\Windows\system32\cmd.exe
APPDATA---->C:\Users\ASUS\AppData\Roaming
E:\jdk
#system-properties
#Fri Feb 27 18:34:38 CST 2015
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=E\:\\jdk\\jre\\bin
java.vm.version=1.6.0_02-b06
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http\://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
sun.java.launcher=SUN_STANDARD
user.country=CN
sun.os.patch.level=
java.vm.specification.name=Java Virtual Machine Specification
user.dir=E\:\\javaworkspace\\test
java.runtime.version=1.6.0_02-b06
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=E\:\\jdk\\jre\\lib\\endorsed
os.arch=x86
java.io.tmpdir=C\:\\Users\\ASUS\\AppData\\Local\\Temp\\
line.separator=\r\n
java.vm.specification.vendor=Sun Microsystems Inc.
user.variant=
os.name=Windows Vista
sun.jnu.encoding=GBK
java.library.path=E\:\\jdk\\bin;.;C\:\\Windows\\Sun\\Java\\bin;C\:\\Windows\\system32;C\:\\Windows;C\:\\Program Files\\Java\\jdk1.6.0_45\\bin;E\:\\android\\adt-bundle-windows-x86_64-20140702\\sdk\\platform-tools;E\:\\android\\adt-bundle-windows-x86_64-20140702\\sdk\\tools;C\:\\Windows\\system32;C\:\\Windows;C\:\\Windows\\system32\\wbem;E\:\\MySQL5.0\\bin
java.specification.name=Java Platform API Specification
java.class.version=50.0
sun.management.compiler=HotSpot Client Compiler
os.version=6.1
user.home=C\:\\Users\\ASUS
user.timezone=Asia/Shanghai
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=GBK
java.specification.version=1.6
java.class.path=E\:\\javaworkspace\\test\\bin
user.name=ASUS
java.vm.specification.version=1.0
java.home=E\:\\jdk\\jre
sun.arch.data.model=32
user.language=zh
java.specification.vendor=Sun Microsystems Inc.
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode, sharing
java.version=1.6.0_02
java.ext.dirs=E\:\\jdk\\jre\\lib\\ext;C\:\\Windows\\Sun\\Java\\lib\\ext
sun.boot.class.path=E\:\\jdk\\jre\\lib\\resources.jar;E\:\\jdk\\jre\\lib\\rt.jar;E\:\\jdk\\jre\\lib\\sunrsasign.jar;E\:\\jdk\\jre\\lib\\jsse.jar;E\:\\jdk\\jre\\lib\\jce.jar;E\:\\jdk\\jre\\lib\\charsets.jar;E\:\\jdk\\jre\\classes
java.vendor=Sun Microsystems Inc.
file.separator=\\
java.vendor.url.bug=http\://java.sun.com/cgi-bin/bugreport.cgi
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.endian=little
sun.desktop=windows
sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
Windows Vista

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值