![[ 永远的UNIX::UNIX技术资料的宝库 ]](/images/title.gif)
|
| 首页 > 编程技术 > Java > 正文 |
 |
| 在Java中获取系统属性 |
| 本文出自:www.chinajavaworld.com 作者: 苏洋 (2002-01-01 08:10:00) |
|
Java语言以其面向对象、跨平台、可移植性好、安全性高等优点,受到众多编程人员的青睐,越来越多的人将其作为应用软件开发语言的首选。 | |
在Java应用程序运行时,特别是需要在跨平台工作环境下运行时,需要确定操作系统类型、用户JDK版本和用户工作目录等随工作平台变化的信息,来保证程序正确运行。一般情况下,可以利用JDK提供的系统属性类(Properties)中的方法,快速地获取工作环境信息。另外,程序开发人员还可以定义与应用程序相关的系统属性文件,在用户程序执行过程中动态地加载程序员定义的属性文件来控制程序运行。 |
|
本文通过对系统属性类的分析,结合实际例子介绍如何定义系统属性文件,并讨论安全策略文件的定义。 |
|
属性类
Java Properties类的继承关系如下: |
|
+--java.util.Hashtable |
|
+--java.util.Properties |
|
在应用程序开始执行时,程序首先读取系统的默认属性。如果定义了用户属性文件,则应用程序加载该属性文件。程序运行过程中可以根据执行情况动态地修改属性定义,并在程序结束运行前,保存属性文件。 |
|
●contains(Object value)、containsKey(Object key):如果给定的参数或属性关键字在属性表中有定义,该方法返回True,否则返回False; |
|
●getProperty(String key)、getProperty(String key, String default):根据给定的属性关键字获取关键字值; |
|
●list(PrintStream s)、list(PrintWriter w): 在输出流中输出属性表内容; |
|
●size():返回当前属性表中定义的属性关键字个数。 |
|
●put(Object key, Object value) :向属性表中追加属性关键字和关键字的值; |
|
●remove(Object key) :从属性表中删除关键字。 |
|
系统属性是指与用户程序相关的操作系统配置信息以及软件信息。通常与用户程序相关的属性关键字包括: |
|
●file.separator : 文件分隔符, Windows环境下为“\",Unix环境下为“/”; |
|
●java.home :Java实时运行环境的安装目录; |
|
●java.ext.dirs :JDK的安装目录; |
|
●path.separator :当前操作系统的路径分隔符; |
|
/*getSystemProperties.java*/ |
|
import java.util.Properties; |
|
public class getSystemProperties |
|
public static void main(String args[]) |
|
Properties prop = new Properties( |
|
System.getProperties() ); |
|
上述程序执行后,在Windows环境中产生类似如下的输出: |
|
Java程序开发人员可以通过定义属性文件来设置程序运行的参数。属性文件是程序外部文件,在应用程序初始运行时,可以通过读取属性文件来获取有关程序运行的参数。例如,在程序运行时需要在程序外部控制程序的执行流程,这时可以通过定义属性文件的方法达到目的。下面结合例子说明属性文件的操作方法: |
|
import java.util.Properties; |
|
public class PropertyFile |
|
static FileInputStream fis; |
|
static FileOutputStream fos; |
|
public static void main(String args[]) |
|
Properties prop = new Properties(); |
|
//生成文件输入和输出流,输入流指向用户已经定义的属性文件,输出流指向由应用程序新定义的属性文件 |
|
fis = new FileInputStream |
|
fos = new FileOutputStream |
|
catch(FileNotFoundException e) |
|
System.out.println(“Cannot create the file stream”); |
|
prop .save ( fos ,“-- a new properties file-”); |
|
System.out.println(“Exception in repleace the keyword”); |
|
在程序执行之前,用户必须首先定义属性文件firstProp.txt,该文件内容如下: |
|
程序运行后,输出新的属性文件secondProp.txt,该文件内容如下(注意观察两个文件关键字Switch内容的区别): |
|
#--a new properties file-- |
|
#Sun Mar 11 21:22:40 CST 2001 |
|
从上例可以看出,通过JDK提供的属性类Properties可以方便地在程序外部对应用程序的执行流程进行控制,从而简化了编程难度,使程序流程可控性更好。 |
|
Java提供的应用程序环境的安全策略,使得不同的代码对系统资源拥有不同的访问许可。Java应用程序安全策略由Policy对象来表达,通过定义安全策略文件来实现。Java 1.2的安全策略文件分为三级:系统安全策略文件、用户安全策略文件和缺省安全策略文件。当Java应用程序启动后,按照先后顺序加载安全策略内容。下面结合典型的安全策略文件内容对安全策略文件的定义进行说明: |
|
permission java.util.PropertyPermission “user.dir”, |
|
permission java.util.PropertyPermission “user.home”,“read”; |
|
permission java.util.PropertyPermission “java.home”,“read”; |
|
permission java.util.PropertyPermission “java.class. |
|
permission java.util.PropertyPermission “user.name”,“read”; |
|
 |
★ 樊强制作 欢迎分享 ★ |