import java.lang.System;
import java.util.Properties;
import java.util.Hashtable;
import java.util.Enumeration;
public class SystemInfo{
        file://懚曻JVM?摼揑宯?懏惈
        static private Properties _property;  
        
        file://Main function
        public static void main(String[] args){
                getSystemProperty();
                
                Hashtable hashKey;
                hashKey=new Hashtable();
                file://彨宯?怣懅揑??帤榓??曻摓hashtable
                hashKey.put("java.home",                        "Java埨憰栚?          ");
                hashKey.put("java.class.path",                  "憰??揑楬宎          ");
                hashKey.put("java.specification.version",       "Java API ?錀揑斉杮   ");
                hashKey.put("java.specification.vendor",        "Java API ?錀揑櫴彜   ");
                hashKey.put("java.specification.name",          "Java API ?錀揑柤徧   ");
                hashKey.put("java.version",                     "Java API ??揑斉杮   ");
                hashKey.put("java.vendor",                      "Java API ??揑櫴彜   ");
                hashKey.put("java.vendor.url",                  "Java API ?錀櫴彜揑URL");
                hashKey.put("java.vm.specification.version",    "Java嫊?婘?錀揑斉杮  ");
                hashKey.put("java.vm.specification.vendor",     "Java嫊?婘?錀揑櫴彜  ");
                hashKey.put("java.vm.specification.name",       "Java嫊?婘?錀揑柤徧  ");
                hashKey.put("java.vm.version",                  "Java嫊?婘??揑斉杮  ");
                hashKey.put("java.vm.vendor",                   "Java嫊?婘??揑櫴彜  ");
                hashKey.put("java.vm.name",                     "Java嫊?婘??揑柤徧  ");
                hashKey.put("java.class.version",               "Java?暥審奿幃揑斉杮  ");
                hashKey.put("os.name",                          "庡婘憖嶌宯?揑柤徧    ");
                hashKey.put("os.arch",                          "庡婘憖嶌宯?揑懱宯??");
                hashKey.put("os.version",                       "庡婘憖嶌宯?揑斉杮    ");
                hashKey.put("file.separator",                   "暯戜栚?揑暘妘晞      ");
                hashKey.put("path.separator",                   "暯戜楬宎揑暘妘晞      ");
                hashKey.put("line.separator",                   "暯戜暥杮峴揑暘妘晞    ");
                hashKey.put("user.name",                        "摉慜梡?揑??柤徧    ");
                hashKey.put("user.home",                        "摉慜梡?揑崻栚?      ");
                hashKey.put("user.dir",                         "摉慜岺嶌栚?          ");
                
                Enumeration enum;
                String propertyKey;
                enum=hashKey.keys();
                while(enum.hasMoreElements()){
                        propertyKey=(String)enum.nextElement();                          
 System.out.println((String)hashKey.get(propertyKey)
    +":"+_property.getProperty(propertyKey));
                }                                                
        }
        /**
         * ?摼宯?懏惈楍昞
         * @return Properties
        */
        static public Properties getSystemProperty(){
                _property=System.getProperties();
                return _property;
        }
}

解决方案 »

  1.   

    获取属性的方法: 
    ●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环境下为“/”; 
    ●user.home :用户主目录; 
    ●java.home :Java实时运行环境的安装目录; 
    ●java.ext.dirs :JDK的安装目录; 
    ●os.name :操作系统名称; 
    ●user.name :用户登录名称; 
    ●os.version :操作系统版本; 
    ●path.separator :当前操作系统的路径分隔符; 
    ●user.dir :当前用户程序所在目录。 
    下面结合例子说明获取系统属性的方法。 
    /*getSystemProperties.java*/ 
    import java.util.Properties;  
    public class getSystemProperties 

    public static void main(String args[]) 
    {  
    //通过获得系统属性构造属性类 prop 
    Properties prop = new Properties(  
    System.getProperties() ); 
    //在标准输出中输出系统属性的内容 
    prop.list(System.out); 

    //根据获取的系统属性确定程序执行流程 
    …… 

    上述程序执行后,在Windows环境中产生类似如下的输出: 
    user.home=C:\WIN95 
    java.home=D:\JDK1.2\JRE 
    java.ext.dirs=D:\JDK1.2 
    os.name=Windows 95 
    user.name=Office 
    java.vm.name=Classic VM 
    os.version=4.10 
    path.separator=; 
    file.separator=\ 
    user.dir=D:\JavaTest 
    属性文件的操作方法 
    Java程序开发人员可以通过定义属性文件来设置程序运行的参数。属性文件是程序外部文件,在应用程序初始运行时,可以通过读取属性文件来获取有关程序运行的参数。例如,在程序运行时需要在程序外部控制程序的执行流程,这时可以通过定义属性文件的方法达到目的。下面结合例子说明属性文件的操作方法: 
    /*PropertyFile.java*/ 
    //引入相关类 
    import java.io.*; 
    import java.util.Properties; 
    public class PropertyFile 

    //定义文件输入和输出流 
    static FileInputStream fis; 
    static FileOutputStream fos; 
    public static void main(String args[]) 
    {  
    //生成新的属性对象 
    Properties prop = new Properties(); 
    try 
    {  
    //生成文件输入和输出流,输入流指向用户已经定义的属性文件,输出流指向由应用程序新定义的属性文件 
    fis = new FileInputStream 
    (“firstProp.txt”); 
    fos = new FileOutputStream 
    (“secondProp.txt”); 

    catch(FileNotFoundException e) 

    System.out.println(“Cannot create the file stream”); 

    try 

    //从输入文件加载系统属性 
    prop.load(fis); 
    //根据程序执行情况更改属性关键字的值 
    prop.put(“Switch”,“1”); 
    //输出新属性文件secondProp.txt 
    prop .save ( fos ,“-- a new properties file-”); 

    catch(IOException e) 

    System.out.println(“Exception in repleace the keyword”); 



    在程序执行之前,用户必须首先定义属性文件firstProp.txt,该文件内容如下: 
    Switch= 0 
    Version= 1.0 
    Directory= JavaTest 
    程序运行后,输出新的属性文件secondProp.txt,该文件内容如下(注意观察两个文件关键字Switch内容的区别): 
    #--a new properties file-- 
    #Sun Mar 11 21:22:40 CST 2001 
    Switch= 1 
    Version= 1.0 
    Directory= JavaTest 
    从上例可以看出,通过JDK提供的属性类Properties可以方便地在程序外部对应用程序的执行流程进行控制,从而简化了编程难度,使程序流程可控性更好。 
    安全策略文件 
    Java提供的应用程序环境的安全策略,使得不同的代码对系统资源拥有不同的访问许可。Java应用程序安全策略由Policy对象来表达,通过定义安全策略文件来实现。Java 1.2的安全策略文件分为三级:系统安全策略文件、用户安全策略文件和缺省安全策略文件。当Java应用程序启动后,按照先后顺序加载安全策略内容。下面结合典型的安全策略文件内容对安全策略文件的定义进行说明: 
    grant 
    {  
    //对系统和用户目录设置“读”的权限 
    permission java.util.PropertyPermission “user.dir”, 
    “read”; 
    permission java.util.PropertyPermission “user.home”,“read”; 
    permission java.util.PropertyPermission “java.home”,“read”; 
    permission java.util.PropertyPermission “java.class. 
    path”,“read”; 
    permission java.util.PropertyPermission “user.name”,“read”; 
    //其他安全策略内容 
    }; 
    上述安全策略文件定义了应用程序对用户目录、用户登录目录、JDK安装目录、用户名称等系统内容具有读的权限。